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;
}
}
} 展开
我把两个文件名同时存进一个数组中间用空格分开,接下来再通过中间的空格把它分成两个字符串(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;
}
}
} 展开
1个回答
展开全部
虽然分离出了作为key和文件的字符串,但没有设置其结尾符\0,结果杯具了。
修改以下几处:
一、在else{
index=i;
break;
}
的break前添加一句:k[i]=0;
二、在else{
index2=i;
break;
}
的break前添加一句:filename[j]=0;
三、在else{
break;
}
的break前添加一句:outputfilename[j]=0;
修改以下几处:
一、在else{
index=i;
break;
}
的break前添加一句:k[i]=0;
二、在else{
index2=i;
break;
}
的break前添加一句:filename[j]=0;
三、在else{
break;
}
的break前添加一句:outputfilename[j]=0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询