C语言中无法检查文件是否结束
这是程序....在vc2010上和vc6.0上运行都不行#include<stdio.h>#include<stdlib.h>voidmain(){intj,a[10],...
这是程序....
在vc2010上和vc6.0上运行都不行
#include<stdio.h>
#include<stdlib.h>
void main()
{
int j, a[10], c;
j=0;
FILE *fp1, *fp2;
fp1=fopen("d:\\cs.dat", "r");
fp2=fopen("d:\\cs2.dat", "w");
while(!feof(fp1))
{
fscanf(fp1, "%d", &a[j]);
j++;
}
rewind(fp1);
j=0;
while(!feof(fp1))
{
printf("%d\n", a[j]);
j++;
}
rewind(fp1);
j=0;
while(!feof(fp1))
{
fprintf(fp2, "%d ", a[j]);
j++;
}
} 展开
在vc2010上和vc6.0上运行都不行
#include<stdio.h>
#include<stdlib.h>
void main()
{
int j, a[10], c;
j=0;
FILE *fp1, *fp2;
fp1=fopen("d:\\cs.dat", "r");
fp2=fopen("d:\\cs2.dat", "w");
while(!feof(fp1))
{
fscanf(fp1, "%d", &a[j]);
j++;
}
rewind(fp1);
j=0;
while(!feof(fp1))
{
printf("%d\n", a[j]);
j++;
}
rewind(fp1);
j=0;
while(!feof(fp1))
{
fprintf(fp2, "%d ", a[j]);
j++;
}
} 展开
展开全部
只有读文件时文件指针才会不停地移动,直到遇到文件结束符停止。
楼主是想把数据读出来显示然后再写入到另一个文件中吧,可以参考下面的程序
int j, a[10], c;
j=0;
FILE *fp1, *fp2;
fp1=fopen("d:\\cs.dat", "r");
fp2=fopen("d:\\cs2.dat", "w");
while(!feof(fp1))
{
fscanf(fp1, "%d", &a[j]);
j++;
}
int i=0;
while(i<j)
{
printf("%d\n", a[i]);
i++;
}
i=0;
while(i<j)
{
fprintf(fp2, "%d ", a[i]);
i++;
}
楼主是想把数据读出来显示然后再写入到另一个文件中吧,可以参考下面的程序
int j, a[10], c;
j=0;
FILE *fp1, *fp2;
fp1=fopen("d:\\cs.dat", "r");
fp2=fopen("d:\\cs2.dat", "w");
while(!feof(fp1))
{
fscanf(fp1, "%d", &a[j]);
j++;
}
int i=0;
while(i<j)
{
printf("%d\n", a[i]);
i++;
}
i=0;
while(i<j)
{
fprintf(fp2, "%d ", a[i]);
i++;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
从rewind(fp1);开始就不对了
后面的while(!feof(fp1))
是不可能判断到结尾的,因为只有文件读写操作才能使文件指针后移
后面的while(!feof(fp1))
是不可能判断到结尾的,因为只有文件读写操作才能使文件指针后移
追问
那文件读写方式改成r+也不行呀,怎么写呢?
追答
不是你的打开方式有问题,是你的逻辑有问题
#include
#include
void main()
{
int j, a[10] ={0}, c;
j=0;
int count = 0;/////记录数字个数
FILE *fp1, *fp2;
fp1=fopen("d:\\cs.dat", "r");
fp2=fopen("d:\\cs2.dat", "w");
while(!feof(fp1))
{
fscanf(fp1, "%d", &a[j]);
j++;
}
count = j;/////保留个数
j=0;
while(j < count)////feof 必须有文件读写操作才会有文件指针变化,这里判断无效
{
printf("%d\n", a[j]);
j++;
}
j=0;
while(j < count)////feof 必须有文件读写操作才会有文件指针变化,这里判断无效
{
fprintf(fp2, "%d ", a[j]);
j++;
}
fclose(fp1);///关闭文件
fclose(fp2);///关闭文件
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
(!feof(fp1))
改成
(feof(fp1)!=-1)
改成
(feof(fp1)!=-1)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询