学习字符串的最基础内容,程序运行出来了,却出现这样的问题
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c', };
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
运行结果
!!!我自认为我的程序没问题,没有报错,没有error,但是运行结果就是这样的不靠谱,说了太多废话,现在来说怎么解决的
我用的编译环境是vs2019
首先将鼠标光标分别放在arr1,arr2处,如下图
arr1后面的[]内容是4,代表arr1有四个元素;arr2后面的[]内容是3,代表arr2有三个元素。可是arr1明明只有三个元素,哪来的四个?实际上arr1中的元素有‘a','b','c','\0'."\0"的值为0,代表字符串结束的标志。所以arr1打印出来的结果是abc。arr2放是'a','b','c'.'c'后的值不确定,也没有字符串结束的标志,所以,打印出abc之后打印出阿来的就是烫烫烫之类的。如果我们主动给他放一个字符串结束标志'\0'进去,相当于我们给它增加一个结束标志,打印出来的结果就是和arr1一样啦
敲黑板啦!!!!
注:字符串的结束标志是一个\0的转义字符,在计算字符串长度的时候\0是结束标志,不算做字符串内容。
修改后的程序:
#include <stdio.h>
int main()
{
char arr1[] = "abc";
char arr2[] = { 'a','b','c',0 };
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
修改后的运行结果:
顺便贴一下今天的学习笔记,大家每天都要加油啊,感谢观看。希望网友们可以不吝赐教,多多批评指正。