1

我想比较用户输入,$$看看它是否匹配用户输入的参数之一。我还想比较一下是否`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

请帮忙。

4

3 回答 3

0

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

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

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

if(argc >=5)
于 2013-08-12T09:20:12.360 回答
0
  1. argc 是 int 。所以你不能下标这个。
  2. 对于字符串,您需要双引号。
  3. 您应该尝试使用 strcmp/strncmp 函数来比较字符串。

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

于 2013-08-12T09:20:57.763 回答
0

第一个 ' ' 仅用于字符,您将其用作字符串条目。它无法工作。然后你不能使用 strcmp 比较带有 '==' 的字符串条目。完成错误错误:下标值既不是数组也不是指针是由于使用argc而不是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);
}
}
于 2013-08-12T09:24:53.537 回答