当我尝试比较指针数组(最初为 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]
的类型是 char
而 list[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/