我的代码中发生了一些奇怪的事情。
我使用fgets
获取文件的每一行,然后使用strtok
进行解析。使用Ubuntu,如果我使用gcc -o name name.c
进行编译,则会得到segmentation fault
。如果我使用-fsanitize=address
进行编译,则代码可以完美运行而无需任何segv。可能是什么问题?
代码是:
char* input;
fgets(input, 1000, stdin);
tok=strtok(input, pars);
但它似乎停在fgets
。
答案 0 :(得分:1)
可能是什么问题?
您的专线
char* input;
只声明一个指向char
的指针,而没有为其分配地址。您认为它将指向何处?
然后您要
fgets(input, 1000, stdin);
最多999个字符,但您永远不能为它们提供空格。
如果将第一行更改为
char input[1000];
它将正常工作,而不会出现细分错误。