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
这是怎么回事呢 展开
#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
这是怎么回事呢 展开
展开全部
修改一
#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 后加个空格的还是第一次见到
自己调试看看
#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 后加个空格的还是第一次见到
自己调试看看
展开全部
#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()函数的用法,对于这个函数它是对文件读写的状态的判断,而判断的依据是上一次读写的结果的状态,所以正确的使用方法是先读再判断这样就不会出错。
#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()函数的用法,对于这个函数它是对文件读写的状态的判断,而判断的依据是上一次读写的结果的状态,所以正确的使用方法是先读再判断这样就不会出错。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
生成的文件多了一个空行导致!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询