【问题标题】:compare c input with $$ and `tty` &比较 c 输入与 $$ 和 `tty` &
【发布时间】:2013-08-13 13:16:39
【问题描述】:

我想将用户输入与$$ 进行比较,看看它是否匹配用户输入的参数之一。我还想比较一下`tty' & 是否匹配用户输入的参数之一。 类似:

int main(int argc, char **argv)
{
    if (argv[4] == '`tty` &') { //line 31
    fprintf(stderr, "error %s\n", argv[4]);
    return(1);
     }

    if (argv[2] == '&&') { //line 36
    fprintf(stderr, "error%s\n", argv[2]);
    return(1);
    }
}

我收到错误消息

ai.c:31:21: warning: character constant too long for its type
ai.c: In function ‘main’:
ai.c:31: warning: comparison between pointer and integer
ai.c:36:21: warning: multi-character character constant
ai.c:36: warning: comparison between pointer and integer

请帮忙。

【问题讨论】:

    标签: c string input char compare


    【解决方案1】:

    当您在 c 中比较字符串时,您应该使用 strcmp 以及 Femaref 在尝试转到整数时所说的 argc

    if (strcmp (argv[4], "`tty` &") != 0) 
    

    另外,为了不出现异常,您应该检查 args 中的参数的数量:

    if(argc >=5)
    

    【讨论】:

    • 很高兴为@Gantavya 服务:)
    【解决方案2】:

    第一个 ' ' 仅用于字符,您可以将其用作字符串条目。它无法工作。 然后你不能使用 strcmp 比较带有 '==' 的字符串条目。 完成报错error: subscripted value is not array or pointer is due to use of argc instead of argv ...

    你的代码应该是:

    #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char ** argv) {
    
    if (strcmp(argv[4], "`tty` ") == 0) { //line 31
         fprintf(stderr, "error %s\n", argv[4]);
         return(1);
    }
    if (strcmp(argv[2],"&&") == 0)  { //line 36
        fprintf(stderr, "error%s\n", argv[2]);
        return(1);
    }
    }
    

    【讨论】:

    • 这就是我要找的东西
    【解决方案3】:
    1. argc 是 int 。所以你不能给它下标。
    2. 对于字符串,您需要双引号。
    3. 您应该尝试使用 strcmp/strncmp 函数来比较字符串。

    阅读一本好的 C 书。在此处下载K & R

    【讨论】:

      猜你喜欢
      • 2017-02-07
      • 2016-01-16
      • 1970-01-01
      • 2023-03-16
      • 2015-07-18
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多