Chinaunix首页 | 论坛 | 博客
  • 博客访问: 116150
  • 博文数量: 27
  • 博客积分: 147
  • 博客等级: 入伍新兵
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-20 09:03
文章分类

全部博文(27)

文章存档

2013年(1)

2012年(26)

我的朋友

分类: C/C++

2012-07-21 13:24:14

1. fgetc: 每行末尾自动加入换行符,而且到文件末尾fgetc会返回EOF值(缺点之一),然后feof会返回真。
    使用时需注意利用feof判断是否到文件末尾,若没有则fputc;否则跳出而不需要fputc,因为这样会输出异常字符

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     FILE *stream;
  5.     int ch;

  6.     stream = fopen("fgetc.in", "r+");

  7.     do {
  8.         ch = fgetc(stream);
  9.         if (ch == EOF)
  10.             break;
  11.         putc(ch, stdout);
  12.     } while (1);

  13.     fclose(stream);
  14.     return 0;
  15. }
2. fgets: 到达文件末尾会返回NULL,此时最后一行会保持一次循环,然后feof才返回为真。
    使用时需注意利用feof判断是否到文件末尾,若没有则fputs;否则跳出而不需要fputs,因为这样最后一行会输出两次

点击(此处)折叠或打开

  1. 1 #include <stdio.h>
  2.   2
  3.   3 int main()
  4.   4 {
  5.   5 FILE *stream;
  6.   6 char ch[256];
  7.   7 char *rtv;
  8.   8
  9.   9 stream = fopen("fgets.in", "r+");
  10.  10 /*
  11.  11 do {
  12.  12 fgets(ch, 256, stream);
  13.  13 if (feof(stream))
  14.  14 break;
  15.  15 fputs(ch, stdout);
  16.  16 } while (1);
  17.  17 */
  18.  18 do {
  19.  19 rtv=fgets(ch, 256, stream);
  20.  20 printf("return value of each fgets: %s", rtv);
  21.  21 fputs(ch, stdout);
  22.  22 } while (!feof(stream));
  23.  23
  24.  24 fclose(stream);
  25.  25 return 0;
  26.  26 }


阅读(1140) | 评论(0) | 转发(0) |
0

上一篇:C编程规范

下一篇:libcstl-2.0.0发布

给主人留下些什么吧!~~