打印字符串出现“烫烫烫”
在初学字符串的时候,喜欢把学习的内容结合起来,就用printf来打印字符串。打印字符串这里的两种方法任意出现错误。先看代码:
char arr1[] = "hello world";
printf("%s\n", arr1);
这种呢是直接把字符串写入数组内,打印出来没有问题,结果如图:
hello world
但是使用另一种打印字符串的方法时:
char arr2[] = {'h', 'e', 'l','l','o',' ','w','o','r','l','d'};
printf("%s\n", arr2);
结果如下
hello world��
我这个还算好的,有的同学会出现“烫烫烫”…很奇怪的乱码。
其实这和字符串数组的建立有关,对于字符串来说,数组内依次存放字符串内容后会在结尾处有个结束标识符‘\n’,我们可以通过调试监视看到
但是监视char arr2[] = {‘h’, ‘e’, ‘l’,‘l’,‘o’,’ ',‘w’,‘o’,‘r’,‘l’,‘d’};就会得到
所以对比两种打印字符串,第二种就是缺少了字符串结束标识符,而标识符‘\0’对应的正是 0 ,所以在第二种的数组结尾加上0即可。即:
char arr2[] = {'h', 'e', 'l','l','o',' ','w','o','r','l','d',0};
printf("%s\n", arr2);
结果自然就是:
hello world
注意:虽然结尾处加上了0,但是它仅仅是结束标识符,不属于字符串的内容!