0
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{ char* key="844607587";

 while(*key!=0){
 printf("hello world,%c\n",*key);
 key++;}
}

为什么程序不会停在零位?那么0是什么意思呢?没有''的那个

4

5 回答 5

6

您犯了一个简单的错误 - 您正在将字符串中的(最有可能的 ASCII)字符与数值 0 进行比较。更改:

while(*key!=0){

while(*key!='0'){

请注意,数值 0 是 C 字符串终止符的值,通常写为'\0',因此您的代码在到达字符串末尾时停止,而不是在看到字符时停止'0'

于 2013-10-07T06:20:38.127 回答
4

while(*key!=0)应该是while(*key!='0')跳过零。key是字符串,所以*key将是 char 并且您正在尝试*key与整数零而不是字符零进行比较。

于 2013-10-07T06:20:39.210 回答
0

我认为是因为您将每个字符与数字 0 进行比较,这与字符“0”不同。

于 2013-10-07T06:21:51.710 回答
0

您正在将 key 与 0 char 或 (null) 字符进行比较,而不是 48 或 0 字符,请尝试''

while(*key!='0')

或者

while(*key!=48)
于 2013-10-07T06:22:22.510 回答
0

该字符'0'与数值 0 不同。在ASCII中 '0' == 32

如果key = "8446\07587"thenwhile(*key!=0)可以正常工作,但是由于您正在处理字符,因此您需要比较字符

while (*key != '0')
于 2013-10-07T06:22:44.197 回答