#include "structs.h"
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE* input = fopen("journal.txt", "r");
FILE* output = fopen("output.txt", "w");
char date[9];
if( ferror(input) || ferror(output) ) {
perror("Error opening input/output file\n");
}
fscanf(input, "%s", date);
fgets(date, 9, input);
fputs(date, output);
fclose(input);
fclose(output);
return 0;
}
它正确编译但在运行时它显示错误
Segmentation fault (core dumped)
我不明白为什么:(请帮助
答案 0 :(得分:5)
您需要检查fopen
是否返回NULL
:
#include <stdio.h>
#include <stdlib.h>
int main () {
FILE * input;
FILE * output;
char date[9];
input = fopen("journal.txt", "r");
if(input == NULL){
perror("Could not open input file");
return -1;
}
output = fopen("output.txt", "w");
if(output == NULL){
perror("Could not open output file");
fclose(input);
return -1;
}
/* ... snip ... */
您的输入文件可能不存在。在ferror
上调用NULL
会导致细分错误。
答案 1 :(得分:0)
#include <stdio.h>
#include <stdlib.h>
int main ()
{
FILE* input = fopen("journal.txt", "r");
FILE* output = fopen("output.txt", "w");
char date[9];
if(input)
{
fscanf(input, "%s", date);
fgets(date, 9, input);
}
else
{
printf("error opening the file");
}
if(output)
{
fputs(date, output);
}
else
{
printf("error opening the file");
}
当你从一个不存在的文件'journal.txt'中读取并调用Ferror触发Segmentation Fault时,你收到了Segmentation故障。