指针和整数警告的比较

标签 c

当我尝试比较指针数组(最初为 NULL)和 char 指针时:

int main(int argc, char **argv){   

    char **list = (char**)malloc(20*sizeof(char)+1);
    char *input = "La li lu le lo";


    if(*list[0] != input[0]) { //or if(list[0][0]!=input[0])
        printf("false: %s", strdict[0]);
    }
}

我经常收到警告:

comparison between pointer and integer

要删除此警告必须做什么? 如果我将其修改为:

if(*list[0] != input[0])

警告被移除,但程序崩溃了。 提前感谢您的帮助。

最佳答案

input[0] 的类型是 charlist[0] 的类型是 char*。如果您想比较字符串,请使用 strcmp() .

但是malloc() 不正确并且list 内容未初始化。我认为,根据其名称和类型,list 旨在成为 char* 的列表:

/* No need to cast return value of malloc(). */
char **list = malloc(20 * sizeof(char*));

然后每个元素都是 char* 并且需要设置为一些 char*,可能 malloc()d 也是:

list[0] = malloc(20); 
/* Populate list[0] with some characters. */

/* Compare to input. */
if (0 == strcmp(list[0], input))
{
    /* Strings equal. */
}

关于指针和整数警告的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13034121/

相关文章:

c - 缩小共轭对的合成除法算法

c - 当两个线程尝试同时写入同一个 tcp 套接字时出现同步问题

c++ - 编译器如何解析结构成员的地址?

c - 获取 gdbm 文件中的行数

c - 获取没有完整路径的目录名 (C unix)

c - 段错误回溯到 vfprintf?

c - fopen/fgets 使用 char* 而不是 FILE*,为什么这样行得通?

c - 如何发送信号?

c - 获取另一个二进制执行的时间 C

c - 难倒 : for loop to build an array not working, 忽略初始条件?