【发布时间】:2016-03-27 03:09:26
【问题描述】:
我会将代码剥离到我遇到问题的部分。
当我执行以下操作时,代码有效
int main() {
FILE * fptr1 = fopen("in.txt", "r");
fread(data, sizeof(char), size, fptr1);
.
.
.
FILE * fptr2 = fopen("out.txt", "w");
fwrite(data, sizeof(char), size, fptr2);
fclose(fptr2);
}
但是当我使用 fgets 或 scanf 获取输入和输出文件名时,出现分段错误。
int main() {
char inputfile[100];
char outputfile[100];
printf("name of input file: \n");
fgets(inputfile, 100, stdin);
printf("name of output file: \n");
fgets(outputfile, 100, stdin);
.
.
.
}
我玩这个已经有一段时间了。我尝试使用 scanf 并尝试更改输入文件和输出文件的分配大小,但我不断收到:
Segmentation fault (core dumped)
【问题讨论】:
-
检查
inputfile和outputfile。它们是否包含终止'\n'? -
好的,但是
\n会导致分段错误吗?据我所知,分段错误是由访问分配内存之外的内存引起的。\n不应该只是因为名称错误而导致程序无法找到文件吗?
标签: c input user-input