分段错误 strcpy/strcat

Segmentation fault strcpy/strcat

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

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

char t-filename[]="Manipulated-", filename[50], td-filename[50];
memset ( filename, '[=11=]', 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); 

当我编译此代码时出现“分段错误(核心已转储)”。

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

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

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

strcat(t-filename,td-filename);

t-filename 不够大,无法容纳结果,这是一个未定义的行为。

这里也一样

strcat(transfilename,translatedfilename);

transfilename 不够大,无法容纳结果,这是一个未定义的行为。