将变量与C中的字符串进行比较的正确格式是什么?

时间:2014-03-29 02:35:03

标签: c string variables comparison

我试图在C中编写一个函数来查询用户的输入,然后根据该输入执行一组特定的任务。我想出的代码如下:

int exit = 1;

int main(void)
{
    while (exit)
    {
        action();
    }
}

void action()
{
    char x[31];
    fgets(x, 30, stdin);
    chomp(x);

    if (x == "stop")
    {
        exit = 0;
    }
}

问题是,每当我输入"停止"进入控制台,它没有注册,循环只是让我不得不按CTRL-C。那么比较有什么问题呢?我输入后打印x,打印出来"停止",所以我不明白为什么if语句不起作用......

顺便说一句,chomp()函数是我自己设计的,它只是删除了第一个/ n并用/ 0替换它。

2 个答案:

答案 0 :(得分:1)

您需要使用字符串比较功能,strcmp()或者,如果您只关心前n个字符,那么strncmp()。请参阅C library reference了解如何使用它。

答案 1 :(得分:0)

您可以使用strcmp()或strncmp()函数来比较代码中的两个字符串。请查看以下代码。

#include <stdio.h>
int exit_code = 1;

void action()
{
    char x[31];
    fgets(x, 30, stdin);

    if ( (strncmp(x,"stop",4)) == 0)
    {
        printf("Both Strings are equal....\n");
        exit_code = 0;
    }
}

int main(void)
{
    while (exit_code)
    {
        action();
    }
}