我想了解一下下面的代碼的getchar()邏輯...的getchar()函數邏輯
printf("Type up to 25 characters and then press Enter. . . \n") ;
for (i = 0; i < 25; i++)
{
msg[ i] = getchar() ;
if (msg[ i] == ' \n')
{
i--;
break;
}
}
putchar(' \n') ;
for (; i >= 0; i--)
{
putchar(msg[ i]) ;
}
在上面的代碼,如果我輸入一個名字,說「STACKEXCHANGE 「,然後按下回車鍵,將顯示單詞properly..but下面的代碼的工作方式不同..
printf("What are your two initials?\n") ;
firstInit = getchar() ;
lastInit = getchar() ;
在這個例子中,如果i型‘ST’,然後按下回車鍵,‘S’將被存儲在firstinit,而「\ n」將存儲在lastInit而不是'T'中。
這是怎麼發生的?不是'T'輸入到緩衝區的第二個字符。 Infact \ n是緩衝區中的第三個字符。所以爲什麼要存儲。如果iam錯誤,糾正我,但是當按下或輸入時釋放緩衝區,那麼爲什麼它會再次存儲在下一個getchar()函數中。
爲什麼第一個代碼執行不同呢?我的意思是如果我輸入「stackexchange」並按回車鍵「t」作爲第二個字符存儲,但在第二個例子中,如果輸入相同的「st」並輸入「enter」,則「t」是不存儲爲第二個輸入,而是將「輸入」作爲第二個輸入。
我很抱歉,如果我的打字是混亂...基本上,我想知道在這兩個代碼的邏輯流程,它是如何發生的幕後..
「在這個例子中,如果我輸入「ST」然後回車,'S'將被存儲在杉木中stinit,而「\ n」將存儲在lastInit而不是'T'中。「 - 這是不正確的。嘗試一下。 – 2015-01-21 08:42:11
@Reeza - 你真的在你的第二個例子中輸入「ST」嗎? – Sadique 2015-01-21 08:45:41
嗯..我真的很困惑現在..實際上我解除了這兩個例子從交流文本書...可以解釋如何getchar()邏輯工作 – ReezaHendricks 2015-01-21 08:47:51