| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2036 人关注过本帖
标题:关于fgetc()/fgets,对数据流的影响问题
只看楼主 加入收藏
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:5 
关于fgetc()/fgets,对数据流的影响问题
我的这个程序,加入了被注释部分就能正常运行,但是如果不加入注释部分,fgets返回的tmp为空指针,当然如果不输出文件内容也能正常fgets.请问这是为什么?
我猜可能是前面读取文件的时候用的fgetc或者putchar对输出的数据流产生了影响,导致其不能正确读入数据.请各位网友为我支招,多谢!
程序代码:
#define _CRT_SECURE_NO_DEPRECATE
# include <stdio.h>
#include<stdlib.h>
#define see system("pause")
void main()
{
    FILE *ff; 

    char ch,sh[20],*tmp;

    ff = fopen("..\\5.txt", "r+");//以读写方式打开文件
    if (ff == NULL){
        printf("error\n");
        see;
    }

    while ((ch = fgetc(ff))!= EOF)    //输出文件内容
    {
        putchar(ch);
    }
    putchar(10);
/*    fclose(ff);
    see;
    ff = fopen("..\\5.txt", "r+");
    if (ff == NULL){
        printf("error\n");
        see;
    }
*/
    tmp=fgets(sh, 20, ff);    //读取文件数据
    printf("%s\n", tmp);
    see;
}

图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 数据流 影响 
2016-09-07 17:09
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:5 
每次重打开文件,文件标记(这里不叫它指针)都回到开头。注释掉该段程序,因为已经到文件末尾了,所以返回
空指针,重新打开,文件标记又回到开头所以又可以读取了。
2016-09-07 18:09
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 2楼 ehszt
那是用rewind回到开头就可以了么?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-07 20:23
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
对不起搞错了,r+好像是指向文件末尾的,我用dev c++试了注释和没注释都一样。
2016-09-07 20:33
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
收藏
得分:0 
回复 4楼 ehszt
可是我用的是vs2013,有注释是能正常显示的,如果没有注释tmp就是空指针。请问这是为什么呢?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-07 21:05
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:5 
putchar(10);这后面加一句fseek(ff,0,SEEK_SET);将光标移到文件初始的地方
 while ((ch = fgetc(ff))!= EOF)这句代码已经将指针指向文件结尾处。
之所以有注释和没注释有这样的区别在于有注释的文件关闭再次打开影响到指针的位置。
2016-09-08 08:08
快速回复:关于fgetc()/fgets,对数据流的影响问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089842 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved