c – fgets()的返回值
发布时间:2020-12-16 04:51:21 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用C中的I / O.这是我的问题 – 我有一个文件,我从中读取了我的输入.然后我使用fgets()来获取缓冲区中的字符串,我以某种方式使用它.现在,如果输入对于缓冲区来说太短,即如果fgets()的第一次读取达到EOF,会发生什么. fgets()应该返回NULL(正如我在
我刚刚开始使用C中的I / O.这是我的问题 – 我有一个文件,我从中读取了我的输入.然后我使用fgets()来获取缓冲区中的字符串,我以某种方式使用它.现在,如果输入对于缓冲区来说太短,即如果fgets()的第一次读取达到EOF,会发生什么. fgets()应该返回NULL(正如我在fgets()文档中读到的那样)?它似乎没有,我得到了正确的输入.除了我的feof(输入)并没有说我们已经达到了EOF.这是我的代码片段.
char buf[BUFSIZ]; FILE *input,*output; input = fopen(argv[--argc],"r"); output = fopen(argv[--argc],"w"); /** * If either of the input or output were unable to be opened * we exit */ if (input == NULL) { fprintf(stdout,"Failed to open file - %s.n",argv[argc + 1]); exit(EXIT_FAILURE); } if (output == NULL) { fprintf(stdout,argv[argc + 0]); exit(EXIT_FAILURE); } if (fgets(buf,sizeof(buf),input) != NULL) { .... } /** * After the fgets() condition exits it is because,either - * 1) The EOF was reached. * 2) There is a read error. */ if (feof(input)) { fprintf(stdout,"Reached EOF.n"); } else if (ferror(input)) { fprintf(stdout,"Error while reading the file.n"); } 解决方法
fgets()的文档没有说出你的想法:
从我的联机帮助页
|