【发布时间】:2020-10-05 22:05:59
【问题描述】:
我正在编写一个程序来打开一个文件(比如“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-filename 打印为“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);
当我编译这段代码时,我得到“分段错误(核心转储)”。
我不知道出了什么问题。有人可以帮忙吗?
【问题讨论】:
-
你能发布真正的代码而不是这个吗?鉴于
t-等在 C 语言中不是有效标识符,并且此代码永远无法编译。 -
请尝试创建一个合适的minimal reproducible example,最好是我们可以复制粘贴(无需修改)并自己尝试。
-
作为一个提示:想想
t-filename的大小。你认为这个数组会有多少个元素? -
我会发布代码...
-
来自编辑。正如评论
transfilename没有备用元素strcat(transfilename,translatedfilename);可以工作。它立即溢出。