1. fgetc: 每行末尾自动加入换行符,而且到文件末尾fgetc会返回EOF值(缺点之一),然后feof会返回真。
使用时需注意利用feof判断是否到文件末尾,若没有则fputc;否则跳出而不需要fputc,因为这样会输出异常字符。- #include <stdio.h>
- int main(void)
- {
- FILE *stream;
- int ch;
- stream = fopen("fgetc.in", "r+");
- do {
- ch = fgetc(stream);
- if (ch == EOF)
- break;
- putc(ch, stdout);
- } while (1);
- fclose(stream);
- return 0;
- }
2. fgets: 到达文件末尾会返回NULL,此时最后一行会保持一次循环,然后feof才返回为真。
使用时需注意利用feof判断是否到文件末尾,若没有则fputs;否则跳出而不需要fputs,因为这样最后一行会输出两次。- 1 #include <stdio.h>
- 2
- 3 int main()
- 4 {
- 5 FILE *stream;
- 6 char ch[256];
- 7 char *rtv;
- 8
- 9 stream = fopen("fgets.in", "r+");
- 10 /*
- 11 do {
- 12 fgets(ch, 256, stream);
- 13 if (feof(stream))
- 14 break;
- 15 fputs(ch, stdout);
- 16 } while (1);
- 17 */
- 18 do {
- 19 rtv=fgets(ch, 256, stream);
- 20 printf("return value of each fgets: %s", rtv);
- 21 fputs(ch, stdout);
- 22 } while (!feof(stream));
- 23
- 24 fclose(stream);
- 25 return 0;
- 26 }
阅读(1140) | 评论(0) | 转发(0) |