学习字符串过程中,运行结果有一串烫烫烫该怎么解决

学习字符串的最基础内容,程序运行出来了,却出现这样的问题

#include 
int main()
{
char arr1[] = "abc";
	char arr2[] = { 'a','b','c', };
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	return 0;
}

运行结果学习字符串过程中,运行结果有一串烫烫烫该怎么解决_第1张图片

 

!!!我自认为我的程序没问题,没有报错,没有error,但是运行结果就是这样的不靠谱,说了太多废话,现在来说怎么解决的

我用的编译环境是vs2019

首先将鼠标光标分别放在arr1,arr2处,如下图

学习字符串过程中,运行结果有一串烫烫烫该怎么解决_第2张图片

学习字符串过程中,运行结果有一串烫烫烫该怎么解决_第3张图片 

 

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 
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a','b','c',0 };
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	return 0;
}

修改后的运行结果:

 顺便贴一下今天的学习笔记,大家每天都要加油啊,感谢观看。希望网友们可以不吝赐教,多多批评指正​​。

学习字符串过程中,运行结果有一串烫烫烫该怎么解决_第4张图片

 

你可能感兴趣的:(笔记,c语言,开发语言,后端)