c语言fopen打开不了txt

题目是这样的,题目要求同时输入一个key(可无视)和两个filename中间用空格分开,然后用fopen读取第一个,建立第二个。我把两个文件名同时存进一个数组中间用空格分... 题目是这样的,题目要求同时输入一个key(可无视)和两个filename 中间用空格分开,然后用fopen读取第一个,建立第二个。
我把两个文件名同时存进一个数组中间用空格分开,接下来再通过中间的空格把它分成两个字符串(filename和outputfilename),但是这样分开之后fopen打开不了页创建不了txt了。。。什么原因呢?code如下

char *filename, *outputfilename,*keyandfile;
int index,index2;
FILE *fp;
FILE *ofp;
char newoutputfile;

char *filename, *outputfilename,*keyandfile;
int index,index2;
FILE *fp;
FILE *ofp;
char newoutputfile;

printf("Please enter the key, input filename, and output filename:\n");
keyandfile=(char*)calloc(243,sizeof(char));
gets(keyandfile);
k=(char*)calloc(81,sizeof(char));
for(i=0;i<243;i++)
{
if(keyandfile[i]!=' ')
{
k[i]=keyandfile[i];
}else{
index=i;
break;
}
}
filename=(char*)calloc(81,sizeof(char));
for(i=index+1,j=0;i<243;i++,j++)
{
if(keyandfile[i]!=' ')
{
filename[j]=keyandfile[i];
}else{
index2=i;
break;
}
}
outputfilename=(char*)calloc(81,sizeof(char));
for(i=index2+1,j=0;i<243;i++,j++)
{
if(keyandfile[i]!=' ')
{
outputfilename[j]=keyandfile[i];
}else{
break;
}
}
free(keyandfile);

if((fp=fopen(filename,"r"))==NULL)
{
printf("Input file not found.");
exit(0);
}

if((ofp=fopen(outputfilename,"w"))!=NULL)
{
printf("Output file already exists. Overwrite (y/n)? ");
scanf("%c",&newoutputfile);
if(newoutputfile='n')
{
exit(0);
}else if(newoutputfile='y')
{
outputfilename=outputfilename;
}
}

}
展开
 我来答
百度网友72165e1
2013-11-30 · TA获得超过2170个赞
知道大有可为答主
回答量:1369
采纳率:100%
帮助的人:424万
展开全部
虽然分离出了作为key和文件的字符串,但没有设置其结尾符\0,结果杯具了。
修改以下几处:
一、在else{
index=i;
break;
}
的break前添加一句:k[i]=0;

二、在else{
index2=i;
break;
}
的break前添加一句:filename[j]=0;

三、在else{
break;
}
的break前添加一句:outputfilename[j]=0;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式