C中指针和整数的比较

use*_*386 6 c pointers

我对C中的程序有点愚蠢的问题.我的编译器说我: 警告:指针和整数之间的比较.我真的不知道为什么.我只想在屏幕上写每个字符.

我的代码:

int i = 0;
char str[50] = {'s', 'a', 'm', 'p','l','e'}; //only for test
while (str[i] != NULL) {
    putchar(str[i]);
    i++;
}
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?我没有在互联网上找到任何有用的答案.

flo*_*olo 9

NULL是一个指针,str[i]是str数组的第i个字符.char是整数类型,当你比较它们时会得到警告.

我想你想要检查字符串的结尾,你会检查字符串值为0(字符串的结尾),也就是说'\0'.

但是:这不会帮助你,因为你定义它和字符数组而不是字符串,你没有在字符数组中定义终止0(你很幸运,它隐含在那里).

PS:下次你应该至少给出编译器抱怨的信息.


Jer*_*fin 8

NULL应仅用于指针上下文,但在此您将其与字符进行比较.

你通常想要这样的东西:

while (str[i] != '\0') {
Run Code Online (Sandbox Code Playgroud)

[或,当然,类似puts(str);printf("%s", str);]