标题:关于fgetc()/fgets,对数据流的影响问题
取消只看楼主
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
已结贴  问题点数:10 回复次数:2 
关于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
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
得分:0 
回复 2楼 ehszt
那是用rewind回到开头就可以了么?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-07 20:23
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
得分:0 
回复 4楼 ehszt
可是我用的是vs2013,有注释是能正常显示的,如果没有注释tmp就是空指针。请问这是为什么呢?

  DEBUG的过程就是进步的过程,每一个小错误都是大问题!...
2016-09-07 21:05



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-468577-1-1.html




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

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