C 我在尝试读取文件时遇到分段错误
我查阅了如何使用fgets函数,因此编写了以下代码: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
#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