| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1607 人关注过本帖
标题:fscanf函数读文件产生错误
只看楼主 加入收藏
曾大d
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2018-4-19
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
fscanf函数读文件产生错误
下面是我写的关于文件的一个程序,可是当我输入一些字符如abc,但是输出的是abcc,就是最后一个字符会输出两次,请教大佬一下

#include<stdio.h>
#include<stdlib.h>
void main ()
{
    int num=0;
    char s[100],c[100];
    FILE *fp1,*fp2;
    if((fp1=fopen("1.txt","w+"))==NULL)
    {
        printf("文件打开失败!\n");
        system("pause");
        exit(0);
    }
    printf("请输入一些字符:");
    gets(s);
    fputs(s,fp1);
    fclose(fp1);
    if((fp2=fopen("1.txt","r"))==NULL)
    {
        printf("文件打开失败!\n");
        system("pause");
        exit(0);
    }
    char ch;
    while(!feof(fp2))
    {
        fscanf(fp2,"%c",&ch);
        printf("%c",ch);
    }
    printf("\n");
    fclose(fp2);
}
搜索更多相关主题的帖子: fscanf 错误 文件 字符 printf 
2018-05-13 10:49
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:7 
为什么总有人以 feof 作循环条件,这种低级的错误不应当是个普遍现象
2018-05-13 13:59
邹阳
Rank: 6Rank: 6
等 级:侠之大者
威 望:4
帖 子:124
专家分:402
注 册:2015-10-8
收藏
得分:7 
代码中出现个问题:char ch 对变量的定义需要统一放在前边才符合代码编写规范。同时,因为你没有说明代码所要实现的功能,所以从代码的逻辑上来讲,很难明白用意。
推测该代码的功能是建立一个文本并写入字符,然后再把文本的内容读出并显示出来。【发现的问题】:但在代码开始的时候为何会判断文件==NULL就提示错误呢?你都没有输入字符,文本肯定是空的,那么你在问题中讲述输入字符的过程又是如何进行的呢?我这边代码复制粘贴过来时钟提示“打开错误”。
所以,代码存在逻辑错误。

[此贴子已经被作者于2018-5-13 14:14编辑过]


I'm a new comer
2018-05-13 14:12
anduoba
Rank: 2
等 级:论坛游民
帖 子:36
专家分:44
注 册:2018-4-27
收藏
得分:7 
回复 3楼 邹阳
fopen如果成功打开,无论文章内容是否为空,都会返回一个值,为文件所对应的地址;
如果:
用r打开不存在文件;
磁盘故障;
磁盘空间已满;
则打开失败,返回NULL。
他这里没错,应该是其他地方错了
2018-05-13 22:23
anduoba
Rank: 2
等 级:论坛游民
帖 子:36
专家分:44
注 册:2018-4-27
收藏
得分:0 
2楼大神
对于feof()这个函数, 它是先读再判断是否到文件尾, 也就是说在它之前一定要读一次才能做出判断。
所以应该先读一次
程序代码:
char ch;
    fscanf(fp2,"%c",&ch);//事先读一次
    while(!feof(fp2))
    {
        printf("%c",ch);//输出
        fscanf(fp2,"%c",&ch);//
       
    }

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


[此贴子已经被作者于2018-5-13 22:39编辑过]

2018-05-13 22:31
快速回复:fscanf函数读文件产生错误
数据加载中...
 
   



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

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