首页 > 解决方案 > 为什么我不能在 strcmp() 中使用搭配?

问题描述

以下代码不起作用:

char text[10];
    scanf(" %s", &text);

    if (strcmp(text, "some text") == 0)
        puts("some text");

但是当我改变'if part'时,一切都很好:

if (strcmp(text, "sometext") == 0)

为什么它会以这种方式工作以及如何解决它?

标签: cstrcmp

解决方案


问题不在于您的strcmp电话,而在于您的scanf电话!当您键入some text作为输入时,scanf将在第一个空格处停止读取,因此您的text字符串将是“some” - 因此,strcmp调用将(正确)返回非零,因为这“some text”不同.

有关scanf, 空格和%s格式的此功能的更多信息,请参阅此主题:如何使用 scanf 允许输入空格?


推荐阅读