2016-01-15 45 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

我应该如何编辑代码? –