#include<stdio.h>
#include<ctype.h>
int main() {
FILE *fpin = fopen("in.txt", "r");
fprintf(fpin, "hello, world!");
fclose (fpin);
char c;
fpin = fopen("in.txt", "r");
FILE *fpout = fopen("out.txt", "w");
while ((c = fgetc(fpin)) != EOF) {
fputc (toupper(c), fpout);
}
fclose (fpout);
fclose (fpin);
return 0;
}
我正在
分段错误
谢谢。
答案 0 :(得分:10)
我对C一无所知,但似乎你写的是一个你已经打开的文件......
FILE *fpin = fopen("in.txt", "r");
fprintf(fpin, "hello, world!");
应该是:
FILE *fpin = fopen("in.txt", "w");
fprintf(fpin, "hello, world!");
答案 1 :(得分:4)
他们首先发现的问题是你没有检查fopen
电话是否成功。它可能会失败并导致fpin
为NULL,这将导致稍后在代码中出现问题。
FILE *fpin = fopen("in.txt", "r");
if (!fpin) {
printf("Error opening in.txt");
return EXIT_FAILURE;
}
答案 2 :(得分:3)
char c;
更改为int c;
- fgetc
返回一个int。fopen
的调用的返回值,看看是否收到NULL返回。fopen
的模式更改为"w"
,以便您可以写入该文件。\n
"hello world!"
醇>
答案 3 :(得分:1)
最有可能的一个fopen
来电失败并返回NULL
。最有可能的候选人是以下几行:
FILE *fpin = fopen("in.txt", "r");
您可能打算在此处使用"w"
,因为您稍后会尝试写入该文件。我猜这个文件还不存在......因此,当你尝试用"r"
打开它时,fopen
调用失败。