1

我试图用空格分解一个字符,然后执行一些条件逻辑,但是在 char * 上使用 strcmp 不起作用。

int main(void)
{
    char buf[64];
    char *cmd;

    // assign some space delimited words to buf...

    if (strcmp(buf, "somestring junk") == 0) { // this works
        // do stuff here
    }

    cmd = strtok(buf, " ");

    if (strcmp(cmd, "somestring") == 0) { // this doesn't work
        // do stuff here
    }

    return 0;
}

我尝试了不同的变体,例如“somestring”或“somestring\n”,但没有成功。代码编译没有错误或警告。strcmp 的手册页让我相信 strcmp 应该可以工作。我究竟做错了什么?

4

1 回答 1

1

它不起作用,因为您在 strcmp 中混合了 cmd 和 buf。以下代码应该适合您:

#include <stdio.h>
#include <cstring>

int main(void)
{
    char buf[64] = "somestring junk";
    char *cmd;

    // assign some space delimited words to buf...

    if (strcmp(buf, "somestring junk") == 0)
    {
            printf("First strcmp works!\n");
    }

    cmd = strtok(buf, " ");

    if (strcmp(cmd, "somestring") == 0)
    {
        printf("Second strcmp works!");
    }

    return 0;
}
于 2013-11-14T21:37:18.723 回答