2011-04-03 49 views
2

我寫了最無害的C程序,但是我無法得到預期的結果。我希望你能說出我的錯誤在哪裏。C getchar錯誤

這是代碼:

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char** argv) { 
    int c, var4; 
    double var1,var2,var3; 

    while ((c = getchar()) != EOF) { 

     while (c != ':') { 
      putchar(c); 
      c = getchar(); 
     } 
     //scanf("%d/%d/%d",&mm,&dd,&yy); 
     //scanf("%lf%lf%lf%d",&var1,&var2,&var3,&var4); 
    } 
    return 0; 
} 

和我使用此文件中的輸入(命令行重定向)

名1 - 代碼1:
04/03/2011 4.5 5.6 9.8 145
04/03/2011 6.5 4.6 9.9 185
名稱2 - 代碼2:
05/03/2011 4.5 5.6 9.8 135
05/03/2011 6.5 4.6 9.9 165

期間while環路出現錯誤(我試過printf,而不是putchar和它打印-1不休,似乎永遠無法到達EOF

我認爲這是所有,我先謝謝你的幫助。

+0

你得到了什麼錯誤?我假設你期待看到'Name1 - Code1'?你嘗試過'char c;'? – 2011-04-03 05:42:27

+0

感謝大家和對不起,這是一個愚蠢的問題 – 2011-04-03 06:17:49

回答

2

你會得到一個字符,然後進入內部循環 - 檢查':',但不是EOF。所以,除非文件以:結尾(以便它可以被外部循環看到),否則內部循環將在它到達EOF時永遠旋轉。

1

內循環不會停在EOF處。

您收到來自getchar (EOF == -1)的錯誤,因爲該文件已完成。這就是無盡的打印。

1

您不在內部getchar循環內檢查EOF,因此允許它連續讀取EOF(-1)並將其打印出來。

我不知道你的預期結果是什麼,所以我不能幫你。