fgets 的分段错误
Segmentation fault with fgets
我正在做一个简单的程序,只是为了打开一个文件并逐行打印它的内容,但是我在用 "gcc -o test pruebas.c" 编译时得到 "Segmentation fault (core dumped)"(我的文件名为 pruebas.c ) 然后 运行 来自 Windows 10 的 Ubuntu 控制台中的程序,可能是什么问题?
这是我写的代码:
int main()
{
char* line = NULL;
FILE* file = fopen("D:/Documents/Uni/blur.lp", "r");
while(fgets(line, sizeof(line), file))
{
printf("%s", line);
}
fclose(file);
return(0);
(“.lp”扩展名是我必须开发的一种图像格式的扩展名)
这是您的程序的改进版本,它考虑了上述评论。
它还使用预处理器宏来定义行大小和文件名:
#include <stdio.h>
#include <stdlib.h>
#define LINE_SIZE 100
#define FILE_NAME "D:/Documents/Uni/blur.lp"
int main(int argc, char **argv)
{
char line[LINE_SIZE] ;
FILE *file ;
file = fopen(FILE_NAME, "r");
if (file == NULL)
{
perror("cannot access " FILE_NAME);
return 1;
}
while(fgets(line, LINE_SIZE, file))
{
printf("%s", line);
}
fclose(file);
return(0);
}
我正在做一个简单的程序,只是为了打开一个文件并逐行打印它的内容,但是我在用 "gcc -o test pruebas.c" 编译时得到 "Segmentation fault (core dumped)"(我的文件名为 pruebas.c ) 然后 运行 来自 Windows 10 的 Ubuntu 控制台中的程序,可能是什么问题?
这是我写的代码:
int main()
{
char* line = NULL;
FILE* file = fopen("D:/Documents/Uni/blur.lp", "r");
while(fgets(line, sizeof(line), file))
{
printf("%s", line);
}
fclose(file);
return(0);
(“.lp”扩展名是我必须开发的一种图像格式的扩展名)
这是您的程序的改进版本,它考虑了上述评论。 它还使用预处理器宏来定义行大小和文件名:
#include <stdio.h>
#include <stdlib.h>
#define LINE_SIZE 100
#define FILE_NAME "D:/Documents/Uni/blur.lp"
int main(int argc, char **argv)
{
char line[LINE_SIZE] ;
FILE *file ;
file = fopen(FILE_NAME, "r");
if (file == NULL)
{
perror("cannot access " FILE_NAME);
return 1;
}
while(fgets(line, LINE_SIZE, file))
{
printf("%s", line);
}
fclose(file);
return(0);
}