linux - 如何检查变量是否等于 C 中的文本?

标签 linux c

如何检查变量是否等于某些文本?例如: 如果我用 scanf 输入“Hi”,那么我如何检查“Hi”是否是其他输入的内容。 我编写了一个程序,但它有错误。

错误:

feel.c: In function ‘main’:
feel.c:9:13: error: invalid operands to binary == (have ‘float’ and ‘char *’)
  if ( value == "Linux mood!" ) {
             ^
feel.c:12:13: error: invalid operands to binary == (have ‘float’ and ‘char *’)
  if ( value == "So sad." ) {
             ^
feel.c:15:13: error: invalid operands to binary == (have ‘float’ and ‘char *’)
  if ( value == "Happy!" ) {
             ^
feel.c:18:2: error: ‘else’ without a previous ‘if’
  else {
  ^

我使用 float 作为变量。

最佳答案

float 用于存储数字而不是字符串。您应该使用 char* 来存储字符串。另一个问题是,您无法使用 == 运算符来比较 C 风格的字符串。您必须使用 strcmp 函数。

strcmp 是 C 库的一部分。它不是您可以安装的东西。

示例:

#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
    printf("Please enter a string:\n");
    char buff[20]; //Note that input can be only 19 characters
    scanf("%s", buff);

    if(!strcmp(buff, "Hello"))
    {
        printf("They are equal!\n");
    }
    else
    {
        printf("They are not equal!\n");
    }

    return 0;
}

关于linux - 如何检查变量是否等于 C 中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26284408/

相关文章:

c++ - C/C++远程消息队列的推荐

linux - 如何在 bash 中反转转义反斜杠编码,如 "\"和 "\303\266"?

linux - bash 中的脚本等待进程然后放弃

linux - 用 sed 将旧链接 url 替换为新链接 url

c - 将结果或错误返回给函数的调用者

c - 我的 C 脚本停止工作

c - 定义 "needs to be at least XX bytes long"是否包含空终止符,还是应该使用 XX+1?

C 数组分配过程 - 一次或单独 - 部分数组分配 - 不同的输出

linux - 如果换行符是文件中的最后一个字符,如何删除它?

linux - zsh + 电力线 : prompt disappears with long command line