C语言问题,关于文件操作的

#include<stdio.h>#include<stdlib.h>intmain(){FILE*infile,*outfile;intm,i=0;charc;outf... #include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *infile,*outfile;
int m,i=0;
char c;
outfile=fopen("test.txt","w");
while(i<5)
{
fprintf(outfile,"%c %d\n",65,10); //向文件test.txt写入五行数据
i++;
}
fclose(outfile);
infile=fopen("test.txt","r");
while(!feof(infile))
{
fscanf(infile,"%c %d",&c,&m); //从文件test.txt读入数据
fgetc(infile); //读取一个'\n',使文件指针移到下一行
printf("%c %d\n",c,m); //将数据显示在屏幕上
}
fclose(infile);
return 0;
}
程序运行后向屏幕输出了六行数据,可是本来应该输出五行呀,而且我打开test.txt文件里面也只有五行数据,每一行都是A 10
这是怎么回事呢
展开
 我来答
ST683617
2012-06-02
知道答主
回答量:12
采纳率:0%
帮助的人:12.1万
展开全部
修改一
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *infile,*outfile;
int m,i=0;
char c;
outfile=fopen("test.txt","w");
while(i<5)
{
fprintf(outfile,"%c %d",65,10); //把这个回车去掉
i++;
}
fclose(outfile);
infile=fopen("test.txt","r");
while(!feof(infile))
{
fscanf(infile,"%c %d",&c,&m); //fgetc(inflie) 去掉
printf("%c %d\n",c,m);
}
fclose(infile);
return 0;
}
--------修改2
#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *infile,*outfile;
int m,i=0;
char c;
outfile=fopen("test.txt","w");
while(i<5)
{
fprintf(outfile,"%c %d\n",65,10);
i++;
}
fclose(outfile);
infile=fopen("test.txt","r");
while(!feof(infile))
{
fscanf(infile,"%c %d ",&c,&m); //这里%d后加个空格,
printf("%c %d\n",c,m); //可能是fscanf输入格式对齐问题,
}
fclose(infile);
return 0;
}
每一行当然是 A 10
你给的就是五次A 10
不过那个fscanf %d 后加个空格的还是第一次见到
自己调试看看
天狼的夜
2012-06-02 · 超过36用户采纳过TA的回答
知道小有建树答主
回答量:107
采纳率:0%
帮助的人:77.9万
展开全部
#include<stdio.h>
#include<conio.h>

int main()
{
FILE *infile,*outfile;
int m,i=0;
char c;
outfile=fopen("test.txt","w");
while(i<5)
{
fprintf(outfile,"%c %d\n",65,10);
i++;
}
fclose(outfile);
infile=fopen("test.txt","r");
fscanf(infile,"%c %d",&c,&m);/***************************/
fgetc(infile);/***************************/
while(!feof(infile))
{
printf("%c %d\n",c,m);/***************************/
fscanf(infile,"%c %d",&c,&m);/***************************/
fgetc(infile); /***************************/
}
fclose(infile);
getch();
return 0;
}
程序中/***************************/的语句是我做的一些调整,你的程序多输出一行的原因是不明白feof()函数的用法,对于这个函数它是对文件读写的状态的判断,而判断的依据是上一次读写的结果的状态,所以正确的使用方法是先读再判断这样就不会出错。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bond8
2012-06-02
知道答主
回答量:23
采纳率:0%
帮助的人:17.1万
展开全部
生成的文件多了一个空行导致!!!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式