![](/img/trans.png)
[英]there is an error shows up to be “comparison between pointer and integer ('int' and 'const char *')”
[英]error: comparison between pointer and integer ('int' and 'string' (aka 'char *'))
我从C语言开始,任何帮助将不胜感激。
如果要匹配用户在argv []上传递的字符串,我要从“字母”中保存的字符串进行逐一比较。 此外,我的if子句有一个我不明白的问题。
crypt.c:17:18: error: comparison between pointer and integer ('int' and 'string' (aka 'char *')) [-Werror]
if (g[i] == argv[1])
~~~~ ^ ~~~~~~~
我不同意编译器,它是我之前定义的指针和整数。 g作为字符串,argv []作为字符串。 有人可以告诉我我所缺少的吗? 我几乎不了解指针,您还能提供一些理论吗? 谢谢。
这是我的代码:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Wrong Input\n");
}
string g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (int i = 0, n = strlen(g); i < n; i++)
{
if (g[i] == argv[1])
{
printf("True\n");
}
else
printf("False\n");
}
}
我将假设string
是typedef char *
。 (C语言中的字符串太奇怪了,我建议您不要假装它们只是指针,不要用string
类型将其隐藏。)
麻烦的是argv
是char **
,一个字符串数组。 而g
是char *
或字符串。 g[0]
是字符串的第一个char
。 argv[0]
是第一个字符串, char *
。
因此g[i] == argv[1]
正在比较char
和char *
。 您可能是说g[i] == argv[1][i]
。
g
是字符串,但是g[i]
不再是字符串。 (阅读: https : //www.tutorialcup.com/cplusplus/strings.htm#CharacterArray )
也许您可以将其作为字符进行检查。
#include <stdio.h>
#include <cs50.h>
#include <string.h>
// maybe cs50.h have this line inside:
// typedef char* string;
int main(int argc, string argv[])
{
if ((argc != 2) || (strlen(argv[1])!=1))
{
printf("Wrong Input\n");
return 0;
}
// second argument, and first char
char arg = argv[1][0];
string g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
for (int i = 0, n = strlen(g); i < n; i++)
{
if (g[i] == arg)
{
printf("True\n");
}
else
{
printf("False\n");
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.