2016-01-15 83 views
0
#include<stdio.h> 
void main() { 
    FILE *fp; 
    char ch; 
    fp = fopen("input.txt", "w"); 
    printf("Enter data"); 
    while ((ch = getchar()) != EOF) { 
    putc(ch, fp); 
    } 
    fclose(fp); 
    fp = fopen("input.txt", "w"); 
    while ((ch = getc(fp)) != EOF) { 
    printf("%c", ch); 
    } 
    fclose(fp); 
} 

第一個while循環如何停止從用戶輸入? 由於存在EOF作爲條件。EOF函數如何在c中工作?

否則我需要use for循環?

+6

必須將'ch' **定義爲'int'。 – pmg

+1

2nd'fp = fopen(「input.txt」,「w」);':'「w」' - >'「r」' – BLUEPIXY

+0

同樣的問題? http://stackoverflow.com/questions/1782080/what-is-eof-in-the-c-programming-language –

回答

4

EOF是一個值,而不是一個函數。它基本上被定義爲一個宏。

作爲參考,從C11,章節§7.21.1,<stdio.h>

EOF
它將擴展爲一個整數常量表達式與int型和負值,即 由幾個函數返回到指示文件結束-,也就是從一個 流輸入沒有更多; [...]

在的情況下,輝getchar() ls,它將返回一個定義爲EOF的值。

從手冊頁(重點煤礦

fgetc()getc()和報價getchar()返回讀爲unsigned char轉換爲int或EOF上的文件或錯誤的結束字符。

這就是說,EOF表示可以不裝配到char類型的值。您最好使用變量的int類型。

第一個while循環如何停止從用戶輸入?

使用CTRL +在Linux d,並CTRL +窗戶ž

+0

它將如何停止從鍵盤輸入,以便將其打印在屏幕上? –

+0

@OmkarPednekar什麼打印在屏幕上?如果'getchar()'失敗,它將返回EOF,並且條件將爲false。 –

+0

我應該如何編輯代碼? –