2017-02-19 121 views
-1

我想寫一個簡單的代碼。c編程輸入字符for循環

我應該使用getchar輸入10個字母,然後打印最小。

Ex。 'A'是ASCII碼中的65,如果我輸入'A',它應該打印'A'是最小的。

我已經完成了我應該輸入字母的第一部分,並且我的for循環中的某些內容正在打破。

這是我的代碼:

#include <stdio.h> 

int main(void) 
{ 
    char ch; 
    int i; 

    for(i=0; i<10; i++) { 
     ch = getchar; 
     printf("You entered : %c\n", ch); 
    } 

    return 0; 
} 

使用程序我得到這個五次:

a 
You entered : a 
You entered : 
+0

請包括代碼和結果作爲您的問題的一部分。鏈接隨着時間的推移會變得無效,讓鏈接消失會使問題完全無法讀取。 –

+0

很抱歉,我是這個頁面的新手。我怎麼做 ?? –

+0

如果你編輯你的答案,你可以插入代碼片段。在所有其他格式化工具旁邊都有一個選項,您可以選擇任何要格式化爲代碼的文本。只需粘貼圖像中的代碼並使用格式化程序 –

回答

0

這不完全清楚你的要求,我假設你想知道爲什麼你的程序在5次迭代後停止,爲什麼你會得到空的額外You entered:

這是由於getchar()的工作方式。當你輸入一個文字並按下Enter時,你實際上正在輸入類似a\n的東西。第一次getchar運行它抓住a,並第二次抓住n(新線)兩次迭代。一旦這樣做,它會等待你輸入更多,因爲它消耗了它可用的全部輸入。

針對您的問題的一種解決方案是在ch = getchar()之後使用額外的getchar(),爲了消耗額外的換行符,您不分配任何東西。

關於此的更多討論請見in this question