6

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

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

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

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

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

4

4 回答 4

11

我已经写了我认为你正在尝试做的完整版本:

    #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,他们是正确的,除了一个新的程序员必须从某个地方开始学习这些东西,所以不要觉得太糟糕我们都在学习......

希望这可以帮助。

于 2013-08-03T05:04:40.320 回答
7

当字符串相同时,strcmp 返回 0。我有使用 strcmp 将字符数组与字符串文字进行比较的代码,当它不起作用时我很困惑。事实证明,当字符串相同时,我假设它会返回 1 是错误的!

也许你犯了同样的错误?

于 2013-08-02T21:34:25.910 回答
2

我认为这对您来说是一个完美的起点:

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

它可能以适合您的水平编写。祝你好运,欢迎来到stackoverflow!

于 2013-08-02T21:34:01.177 回答
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因为它指向与cmd_array.

于 2013-08-03T00:24:55.413 回答