分段故障strcpy / strcat

我正在编写一个程序来打开文件(例如“ input_file”),操纵其内容,然后将其输出到另一个文件(“ manipulated-input_file”)

我通过以下方式用strcpy和strcat完成了此操作:

char t-filename[]="Manipulated-",filename[50],td-filename[50];
memset ( filename,'\0',FILE_NAME);

printf("Please enter the filename - \n");
scanf( "%30s",filename );
strcpy(td-filename,filename);
strcat(t-filename,td-filename);
printf("%s\n",t-filename);

现在printf函数将t文件名打印为“ Manipulated-input_file”

在这部分之后,我有一个部分打开“ input_file”,然后 做点什么。

fptr = fopen(filename,"r");
while ( fgets (line,sizeof line,fptr) != NULL)
{
 ...do something...
}
fclose(fptr);

稍后我想在代码末尾打开一个名称为't-filename'的文件:

tptr = fopen(t-filename,"w");
fprintf(tptr,"something");
fclose(tpr); 

当我编译这段代码时,我收到“分段错误(内核已转储)”。

我不知道出了什么问题。有人可以帮忙吗?

iCMS 回答:分段故障strcpy / strcat

transfilename没有足够的空间来容纳strcat(transfilename,translatedfilename);添加的其他项目。 "Translated-"已经满了,因为[]为您提供了初始化字符串中的确切字符数以及一个空终止符。

您需要将其更改为char transfilename [LARGE_ENOUGH]或使用动态内存分配来在运行时更改大小。

,

strcat(t-filename,td-filename);

t-filename的大小不足以容纳结果,它是未定义的行为。

此处相同

strcat(transfilename,translatedfilename);

transfilename的大小不足以容纳结果,它是未定义的行为。

本文链接:https://www.f2er.com/2123393.html

大家都在问