C语言 程序设计 关于 for 和 '\0'

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char *s="12134211";
int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{switch(s[k])
{case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);

}
}

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
char *s="12134211";
int v[4]={0,0,0,0},k,i;
for(k=0;s[k]!='\0';k++)
{switch(s[k])
{case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
v[i]++;
}
for(k=0;k<4;k++)
printf("%d",v[k]);

}
}
这个两个 不同在于 for(k=0;s[k]!='\0';k++)
为什么 for(k=0;s[k];k++)
这样也可以呢?
'\ 0‘是个什么东西

C规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。C规定以字符'\0'作为字符串结束标志。'\0'是一个ASCII为0的字符,不引起任何控制操作,也不是可显示的字符。str[10]中末尾是字符'\0',所以实际上它只能读取9个字符。
'a'跟“a”是不同的。“a”中还包含'\0'.

由于'\0'是一个ASCII为0的字符,所以s[k]!='\0'跟s[k]不为0 意思一样的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-10
'\0'是字符串的结束标志 系统都会默认添加
相似回答