printf("%c",'\0');会出现什么

为什么我的会出现一个很烦人的东西……怎么能让'\0'打印出来什么也没有?

不管你怎么弄,都会出现小方块的。'\0'不是什么都没有的意思,在C里面是字符串结束的标识。在打印字符串的时候遇到'\0'就结束了,而你用%c的方式把'\0'打出来了,而'\0'是不可显示字符,所以就变成小方块了。
你把'\0'赋给一个变量,然后用%s输出变量的地址试试。类似(char a = '\0'; printf("%s\n",&a);)就没小方块了,不过这不算把'\0'打印出来。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-13
这取决于具体的平台和编译器吧 你是在Linux下用gcc编译的吗?Windows平台下VS2008我试过不会打印出0
‘\0’的ASCII码值是0,字符为nul,以字符打印出来本来就应该没有显示的追问

我用的dev c ~不过我给cmd换过字体。不知道这个影响不

追答

这个跟字体没关系 DEV-C可能遇到这种不可打印字符就自动将%c替换成了%d,所以看到的是0

追问

不是不是~我用visual studio 2013也是这样的。还有,如果把cmd的编码选为英文,就是图里面那个东西,如果编码选中文,那就是打印出一个特别粗的字母a……刚才百度了一下,发现打印出a的不只我一个……这个该怎么解决……
http://bbs.chinaunix.net/thread-3771894-1-1.html

追答

这跟代码页也没多大关系,我这里不管改成936(中文)还是437(英文)都是不打印出任何字符的
这个可能跟你的系统有关 你是在什么系统下试的?其次没有必要纠结这个问题 这不是你的错

本回答被提问者采纳