我已經在C中編寫了一個程序來統計stdin的字符輸入。我想用循環來允許多個條目。 (注:我是編程新手。)爲什麼第一次輸入後字符數錯誤?
main()
{
long nc;
int c;
int kc=1;
for (kc=1;kc<=5;kc=kc+1)
{
nc=0;
c= getchar();
while(c != '0')
{
++nc;
c=getchar();
}
printf("%1d\n",nc);
}
return 0;
}
所以基本上你可能會猜到,循環接受5個條目。
問題:當我輸入Sky0
時,第一個結果是正確的,但是從那時起,一個被添加到計數中。即在4
等計數進入dame0
導致的5
計數,sit0
結果
雖然試圖調試使用prinf在不同階段的問題,我意識到,第一個結果後的代碼發現的結束輸入0
,但進入for循環NEVERTHELESS並等待nc
的下一個輸入爲1
。這會導致相應輸出中的錯誤。
請告訴我哪裏出錯了?爲什麼即使在感應0
之後也會進入循環?
非常感謝您的幫助和時間:)
'nc'在'for'循環的每次迭代中被設置爲'0'。當找到字符「0」時,while循環將被終止。我檢查了@aix的聲明,這是正確的,請參閱http://ideone.com/gw1ON。它顯示了換行符是後續輸入的一部分。 – hmjd
是否有可能c =='0'?當c =='0'時,while循環將被終止。我每次都得到c = -1。 –
你在說俚語嗎?請在編寫問題和縮進代碼時做出一些努力。其他人不會浪費時間閱讀它。 – Seki