c语言中读取文件时出现分段错误



所以我有这个代码,但每次我运行它,我得到分割错误或错误&;error !&;。不管我做什么,这种事总是发生在我身上。

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin=fopen("text.txt","r");
if(fin==NULL)
{
printf("ERROR");
return -1;
}
return 0;
}

请输入这段代码,看看到底是什么错误

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
int main()
{
FILE *fin=fopen("text.txt","r");
if(fin==NULL)
{
printf("%s",strerror(errno));
return -1;
}
return 0;
}

我忽略分割错误,因为没有应该产生分割错误的代码。

但是,如果您得到ERROR作为输出,那么您的文件无法打开。根据您的环境,您的可执行文件可能不会从您期望文件所在的目录运行,因此您基本上有两个选项。

  1. 将文件放在已知的目录下,并指定完整路径(有助于调试):
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin=fopen("/fullpath/text.txt","r");
if(fin==NULL)
{
printf("ERROR");
return -1;
}
return 0;
}
  1. 或者您可以确定当前目录并将文件放在那里。
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fin=fopen("text.txt","r");
if(fin==NULL)
{
char cwd[PATH_MAX];
getcwd(cwd, sizeof(cwd)-1);
printf("ERROR. File not found in path %sn", cwd);
return -1;
}
return 0;
}

最新更新