[英]Comparison between pointer and integer warning
当我尝试比较指针数组(最初为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]);
}
}
我不断收到警告:
指针和整数之间的比较
必须采取什么措施才能消除此警告? 如果我将其修改为:
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. */
}
似乎您正在将整数与数组进行比较,因为List前面有两个星星。 Input [0]是一个字符,而List [0]是一个数组,如果查看List [0] [0],则将比较两个等效的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.