C 我在尝试读取文件时遇到分段错误

C 我在尝试读取文件时遇到分段错误,c,gcc,debian,fopen,fgets,C,Gcc,Debian,Fopen,Fgets,我查阅了如何使用fgets函数,因此编写了以下代码: #include <stdio.h> void main(int argc, char** argv) { if (argc == 2) { FILE* file = fopen(argv[1], "r"); if (file != NULL) { char line[100]; while (fgets(line, size

我查阅了如何使用fgets函数,因此编写了以下代码:

#include <stdio.h>

void main(int argc, char** argv)
{
    if (argc == 2)
    {
       FILE* file = fopen(argv[1], "r");

       if (file != NULL)
       {
           char line[100];
           while (fgets(line, sizeof(line), file))
           {
               printf("%s", line);
           }
       }
    }
}
并使用以下工具运行它:

./a.out textdoc.txt
文件textdoc.txt有一些jibberish行(它不是空的):

我注意到,当我到达fgets()代码行时,出现了一个分段错误


有人能告诉我是什么问题吗?

我也没有得到seg错误:
voidmain.c:3:6:警告:“main”的返回类型不是“int”[-Wmain]
您对
fgets
的调用看起来完全正确。我试着编译并运行你的程序,结果很好——没有分段错误。你的实际问题可能是你的环境所特有的,我们甚至看不到。您确定您在此处完全准确地转录了代码吗?调用
fgets
时出现分段错误的常见原因是:(1)
line
是一个尚未初始化的指针变量,它尚未指向任何位置;(2)无法打开输入文件,因此
文件
指针为空。但是您已经正确地处理了这两个问题,因此它们似乎不是您的问题。在尝试成为大师之前,您可以尝试遵循
main()
的(隐藏)原型,即
int main(void)
intmain(int,char**)。你不必理解为什么,只要正确地做就行了。
./a.out textdoc.txt
ageagea gea g
geagae g g g g
eagae ge g ga a a fea
gea hr hr a faw