我是个C初学者,现在正在做一个程序。
这只是其中的一小部分。
我希望,每当我输入“set A”时,程序输出“Hallo 1”和“Hallo 2”,每当我只输入“set”时,程序只输出“Hallo 1”。
我的问题是,当我只输入“set”时,它会崩溃。。。我不知道为什么

#include <stdio.h>
#include <string.h>
int main()
{
    char command[128];
    printf("ep> ");
    scanf(" %[^\n]%*c", command);

    char *token;
    char *token2;
    char *search = " ";

    token = strtok(command, search);

    token2 = strtok(NULL, search);


      if  (strcmp(token, "set") == 0)
        {
            printf("Hallo1\n");
                if (strcmp(token2, "A") == 0)
            {
                    printf("Hallo2\n");
                    return;
            }
            return;
        }

return 0;
}

最佳答案

这是因为在下面的调用中,token2为空:

 token2 = strtok(NULL, search); // NULL when input is "set"

所以
 if (strcmp(token2, "A") == 0) // Segmentation fault

会导致分割错误
你可以试试这个:
if (token2 && strcmp(token2, "A") == 0)

关于c - [C]-将字符串拆分为2个字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34133681/

10-11 16:20