这是原来的代码:

#include <stdio.h>
int main()
{
    FILE * fp;
    int ch;
    fp = fopen("d:\\aaaaa\\1.txt","r");
    while (!feof(fp))
    {
        ch = getc(fp);
        putchar(ch);
    }
    fclose(fp);
    return 0;
}

以此来输出时会发现好像输出的内容在结尾部分多了一个“空格”

这是改进后的代码:

#include <stdio.h>
int main()
{
    FILE * fp;
    int ch;
    fp = fopen("d:\\aaaaa\\1.txt","r");http://i.cnblogs.com/EditPosts.aspx?opt=1
    while (ch = getc(fp),!feof(fp))
    {
        putchar(ch);
    }
    fclose(fp);
    return 0;
}

会发现改进后的代码会正常输出文件的内容,而且不会在最后添加什么多余的东西

查资料发现,C语言的 feof() 函数返回的是最后一次“读操作的内容”。在未改进的代码中while循环判断的是上一次循环中 fgetc() 获取到的内容,这也就能解释未改进的代码为什么会在结尾多输出“内容”了。

最新文章

  1. Leetcode 259. 3Sum Smaller
  2. 我的nodejs学习之路1
  3. 第二个Sprint冲刺团队贡献分
  4. PHP生成二维码库phpqrcode
  5. 常用面试sql语句
  6. QTY N.W G.W
  7. Thinkphp中distinct的用法
  8. VS2010 .net4.0 登录QQ 获取QQ空间日志 右键选中直接打开日志 免积分 源码下载
  9. Net下无敌的ORM
  10. 配置Eclipse支持java和xml文件的代码补全功能
  11. ArrayList迭代过程删除问题
  12. Disruptor并发框架(一)简介&amp;上手demo
  13. MYSQL—— Insert的几种用法!
  14. centos6.5安装ganglia-gmond
  15. [原创] JAVA 递归线程池测试 ExecutorService / ForkJoinPool
  16. JVM可达性分析算法中,哪些可以作为 root ?
  17. JavaScript操作和使用Cookie
  18. PHP源码安装经常会碰到的问题及解决办法
  19. Resultset转Bean工具类
  20. Codeforces Round #258 (Div. 2)-(A,B,C,D,E)

热门文章

  1. Linux &quot;bring up eth0 failed, eth0 seems not be presernt&quot; 问题解决方案
  2. requests源码分析
  3. minix中时间转换的实现(asctime.c)
  4. [深入浅出Cocoa]iOS网络编程之Socket
  5. Android sd卡log日志
  6. quartz 任务时间调度入门使用
  7. vue之cli脚手架安装和webpack-simple模板项目生成
  8. spring面试大全
  9. Linux中脚本
  10. disk_free_space