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++;
}

}
展开
 我来答
jkfdqjjy
2012-04-18 · TA获得超过171个赞
知道答主
回答量:87
采纳率:0%
帮助的人:18.1万
展开全部
只有读文件时文件指针才会不停地移动,直到遇到文件结束符停止。
楼主是想把数据读出来显示然后再写入到另一个文件中吧,可以参考下面的程序
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++;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanfustudio
2012-04-18 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3770万
展开全部
从rewind(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);///关闭文件

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fall_bird
2012-04-18
知道答主
回答量:19
采纳率:0%
帮助的人:4.2万
展开全部
(!feof(fp1))
改成
(feof(fp1)!=-1)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式