一个简单的实现文件复制的c语言程序

程序如下#include<stdio.h>#include<stdlib.h>intmain(){FILE*in,*out;charch,infile[10],outfi... 程序如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE*in,*out;
char ch,infile[10],outfile[10];
scanf("%s",infile);
getchar();
scanf("%s",outfile);
in=fopen(infile,"rb");
out=fopen(outfile,"w");
ch=fgetc(in);
while(!feof(in))
{
fputc(ch,out);
ch=fgetc(in);
}
fclose(in);
fclose(out);
return 0;
}
运行的时候报错,如图

菜鸟求解是什么原因,谢谢
展开
 我来答
濮方雅BX
2013-01-12 · TA获得超过4042个赞
知道大有可为答主
回答量:2482
采纳率:60%
帮助的人:2436万
展开全部
in和out在赋值后要检查是否正确,遇到调用fopen不成功的你的程序就会崩溃。

解决办法是
加一句在fopen后面
if(in == NULL || out ==NULL) return 0;

另外,注意fopen里的路径要写成类似 c:\\a.txt 之类的
追问
加了这句还是有同样的情况出现阿
我有句打错了不好意思
out=fopen(outfile,"w");应该是out=fopen(outfile,"wb");
我用的是VC studio 2010
追答
我用vs08调试了下正常的。
是不是输入infile和outfile的时候越界了?注意你的定义:
infile[10],outfile[10];

只有10个字符长,除掉结束符,可用的只有9个。假如我输入一个d:\\test.in 这样的就超了,程序会崩溃
腹剑悬针
2013-01-12 · TA获得超过234个赞
知道答主
回答量:107
采纳率:100%
帮助的人:57.4万
展开全部
你这不是文件的内容复制!!!!就是一个程序!!
in=fopen(infile,"rb");
out=fopen(outfile,"w");
文件打开函数都是错的!!
你建两个Txt文档,分别叫infil和eoutfile,在infil里写点东西...
然后写程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE in,out;
char ch,infile[10],outfile[10];
scanf("%s",infile);
getchar();
scanf("%s",outfile);
/******************** 修改的地方 ******************************
in=fopen("infile.txt","rb");
out=fopen("outfile.txt","wb");
/****************** 文件打开后要判断是否成功***************************/
ch=fgetc(in);
while(!feof(in))
{
fputc(ch,out);
ch=fgetc(in);
}
fclose(in);
fclose(out);
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式