繁体   English   中英

错误:指针与整数(“ int”和“ string”(又名“ 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");
    }
}

我将假设stringtypedef char * (C语言中的字符串太奇怪了,我建议您不要假装它们只是指针,不要用string类型将其隐藏。)

麻烦的是argvchar ** ,一个字符串数组。 gchar *或字符串。 g[0]是字符串的第一个char argv[0]是第一个字符串, char *

因此g[i] == argv[1]正在比较charchar * 您可能是说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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM