c语言 编写程序,把给定整数文件中所有大于某值的数复制到另一个文件中。 我这个有错误,请各位高手帮看看

#include<stdio.h>voidmain(intargc,char*argv[]){FILE*in,*out;inti,n;printf("pleaseinpu... #include <stdio.h>
void main(int argc,char *argv[]){
FILE *in,*out;
int i,n;
printf("please input the smallest number that should be copied:");
scanf("%d",&n);
if(argc!=3)
printf("The number of arguments is not correct!\n");
if((in=fopen(argv[1],"r"))==NULL)
printf("Can not open the source file!\n");
if((out=fopen(argv[2],"w"))==NULL)
printf("Can not create the destination file!\n");
while(!feof(in)){
fread(&i,sizeof(int),1,in);
if(i>=n)
fwrite(&i,sizeof(int),1,out);
}
fclose(in);
fclose(out);
}
我创建了一个a.dat文件,文件里是126 127 128 129 130 131 132 133 134,我输入了130,结果却把126~130都复制到了另一个文件中。用Debug查看后发现实际读取的 i 的值很大,大约为171323953、171389489……
请各位高手帮我看看问题出在哪里,再次感谢各位高手!!!
展开
 我来答
sun_siliang
2011-01-01 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4888万
展开全部
程序本身没有问题,数据文件a.dat格式不对。fwrite及fread是读二进制文件的,不能对文本文件进行操作,你先执行下面的程序生成二进制文件a.dat,你的程序就可以正常执行了。但查看a.bat及b.bat要用二进制编辑工具C32ASM等查看。
#include <stdio.h>
void main(int argc,char *argv[]){
FILE *out;
int i;
if((out=fopen("c:\\a.dat","wb"))==NULL)
printf("Can not open the source file!\n");
for(i=126;i<=134;i++)
fwrite(&i,sizeof(int),1,out);
fclose(out);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式