【发布时间】:2012-11-25 18:33:42
【问题描述】:
每次我尝试使用 strtok() 时都会遇到分段错误。不知道为什么-我是 C 的新手。
这是我的代码:
#include "shellutils.h"
#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
char input[150];
while(1) {
prompt();
fgets(input, 150, stdin);
char *fst_tkn = strtok(input, " ");
printf("%s", fst_tkn);
if(feof(stdin) != 0 || input == NULL) {
printf("Auf Bald!\n");
exit(3);
}
}
}
感谢您的帮助!
【问题讨论】:
-
您应该检查
fst_tkn是否不是NULL,即使在第一次调用strtok之后也是如此。 -
顺便说一句,返回
EXIT_FAILURE而不是任意值,它在stdlib.h中声明。 -
这段代码正确吗?至少在 Linux 上,您应该是
#include <string.h>才能正确选择 strtok。当行是strtok(input, ' ');(注意单引号)时,我会遇到类似的段错误,但它对我来说就像上面输入的那样。 -
发布源代码时,请发布您运行它的操作系统。另外,什么是 shellutils.h,它在哪里?这是什么版本的C。我习惯于必须在可执行代码开始之前预先声明指针。
-
很高兴知道。它现在可以工作了,非常感谢!
标签: c segmentation-fault strtok