strtok()在c - 分段错误

时间:2012-11-25 18:33:42

标签: c segmentation-fault strtok

每次我尝试使用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);
        }
    }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

关于代码:

char *fst_tkn = strtok(input, " ");
printf("%s", fst_tkn);

如果您的input变量为空,或仅包含空格,则fst_tkn将设置为NULL。然后,当您尝试将其打印为字符串时,所有投注均已关闭。

您可以在以下代码中看到通过调整值input

的值
#include <stdio.h>
#include <string.h>
int main (void) {
    char input[] = "";
    char *fst_tkn = strtok (input, " ");
    printf ("fst_tkn is %s\n", (fst_tkn == NULL) ? "<<null>>" : fst_tkn);
    return 0;
}