C-比较字符串文字和字符数组

问题描述 投票:6回答:4

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

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

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

当然,之后我想弄清楚他们键入了什么命令(类似于:“ if (command == "hello"),然后执行某些操作”)。我知道这在C语言中是不可能的,因为我正在将字符串文字与字符数组进行比较,但是哪种方法比较好呢?我尝试使用strcmp(command, "hello")仍然出现错误。

您可以提供的任何建议将不胜感激。谢谢!

c arrays string character strcmp
4个回答
6
投票

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

也许您犯了同样的错误?


7
投票

我写了我认为您想做的事情的完整版本:

    #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
投票

我认为这是您的理想起点:

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

可能为您写了正确的级别。祝你好运,欢迎来到stackoverflow!


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';,您无法更改其内容。

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

© www.soinside.com 2019 - 2024. All rights reserved.