C - 将字符串文字与字符数组进行比较

时间:2013-08-02 21:31:54

标签: c arrays string character

我是C的新手,对于如何通过字符数组使用字符串仍然有点困惑。

在我的C程序中,我接受来自用户的命令:

char command[20];
scanf("%s",command);

当然,之后我想弄清楚他们输入了什么命令(类似于“if(command ==”hello“),然后做一些事情)。我知道这在C中是不可能的,因为我正在将字符串文字与字符数组进行比较,但是什么是一个好方法呢?我尝试过使用strcmp(命令,“hello”)但仍然出错。

您可以提供的任何建议都将非常感谢。谢谢!

4 个答案:

答案 0 :(得分:5)

strcmp在字符串相同时返回0。我有使用strcmp比较字符数组和字符串文字的代码,当它不工作时我很困惑。事实证明,当字符串相同时,我认为它会返回1是错误的!

也许你犯了同样的错误?

答案 1 :(得分:4)

我已经写了一份我认为你想要做的完整版本:

    #include <string.h>
    void main()
    {

       char command[20];
       scanf("%s",command);

       // command and "hello" can be less than, equal or greater than!
       // thus, strcmp return 3 possible values
       if (strcmp(command, "hello") == 0)
       {
          printf("\nThe user said hello!");
       }

    }

有几个人评论过使用scanf并且它们是正确的,除了新程序员必须从某个地方开始学习这些东西,所以不要觉得太糟糕我们都在学习......

希望这有帮助。

答案 2 :(得分:2)

我认为这是一个完美的起点:

http://www.wikihow.com/Compare-Two-Strings-in-C-Programming

它可能是为您准备的。祝你好运,欢迎来到stackoverflow!

答案 3 :(得分:0)

在C中讨论字符串时,通常需要两种形式:1。字符数组,2。字符指针。大多数时候,它们是可以互换的。例如:

char *cmd_ptr = "command1";
char cmd_array[20] = "command2";
printf ("cmd1: %s cmd2: %s\n", cmd_ptr, cmd_array);

上述定义的主要区别在于,对于cmd_ptr,您无法更改cmd_ptr[0] = 'a';的{​​{1}}内容,您可以更改数组中的任何元素。

但您可以cmd_array,然后您可以通过cmd_ptr = cmd_array;进行更改,因为它指向与cmd_ptr相同的位置。