c语言空格和空字符问题

#include<stdio.h>
#include<string.h>
int main()
{

printf("%c",0);
printf("%c",'a');

return 0;
}
输出的空格a
为什么

空格符号和空字符是不一样的,在ascii里面,空格符号的ascii码是0x20,而空字符是0x0,2个是完全不一样的2个字符呵呵.
空字符一般来描述一个字符串的结尾,其实是控制符的一种,但不能理解为没有字符,应该理解为代表什么都没有的字符.好比回车0x0a和换行0x0d虽然不显示,但是也是控制字符的一种.(这些字符以前是用于打印机的,所以很多都没有用了)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-12
printf("%c\n",'0'); 这样 就是 0 但是 你输入零 用的字符输出 就是 0 NUL(null) 空字符
空格在ASCII码是0x20, 空字符是0x0
你看起来是一样的长相,但本质不一样
就跟你在记事本里输入若干个空格,在下一行输入一个制表符一样的道理,长得一样,本质是不一的,比如字符串,空格是字符,空字符可是字符串中的结束标志追问

使用strcat和strcpy时,\0是怎么复制的

来自:求助得到的回答
第1个回答  2015-12-12
ASCII码表中数字0不在可见字符范围内

你可以将printf("%c",0);改成

printf("%c",'0');


printf("%c",0x30);追问

那输出空格和输出空字符在屏幕上的效果一样喽

追答

空格在ASCII码是0x20, 空字符是0x0
你看起来是一样的长相,但本质不一样
就跟你在记事本里输入若干个空格,在下一行输入一个制表符一样的道理,长得一样,本质是不一的,比如字符串,空格是字符,空字符可是字符串中的结束标志噢

本回答被提问者采纳
第2个回答  2015-12-12
字符0是不可见字符!追问

那输出是还是会以空格的形式出现吗

追答

不会,空格的ASCII是32

相似回答