测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
C语言----C语言中字符串以“\0”结尾的理解
收藏本文
作者:redrose2100 类别: 日期:2022-05-15 08:54:58 阅读:1273 次 消耗积分:0 分
## 问题: 如下C语言代码,通过两种方式赋值的字符串,结果arr1和arr2打印结果分别是什么? ```c #include
int main() { char arr1[] = "abc"; printf("%s\n", arr1); char arr2[] = { 'a','b','c' }; printf("%s\n", arr2); return 0; } ``` 从字面表面看好像都是abc,正确结果如下所示 ```bash abc abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫 烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫?恢?? ``` ## 原因 出现这样的结果的原因就是C语言中字符串默认是以'\0'结尾的,也就是打印字符串的时候的时候,会默认找到'\0',上面arr2就是因为没有给赋值'\0'\,导致打印的时候就会一致往后找,一直周到'\0',所以才会出现上述随机的乱码数据 若代码修改为如下:则两个字符串打印的结果就一致了 ```c #include
int main() { char arr1[] = "abc"; printf("%s\n", arr1); char arr2[] = { 'a','b','c','\0' }; printf("%s\n", arr2); return 0; } ``` 执行结果如下: ```bash abc abc ``` 下面继续使用strlen()函数计算字符串的长度,观察arr1和arr2的长度 ```c #include
int main() { char arr1[] = "abc"; printf("%s\n", arr1); printf("length of arr1:%d\n", strlen(arr1)); char arr2[] = { 'a','b','c'}; printf("%s\n", arr2); printf("length of arr2:%d\n", strlen(arr2)); return 0; } ``` 执行结果如下,arr1的长度时3,而arr2的长度却是218,这里从另一个角度验证了C语言中字符串中以'\0'结尾,arr2字符串当数完3个字符时,发现还没有'\0',所以这里继续往后找,同时需要注意的是这里arr2的长度并不是说一定是218,而应该是一个随机值 ```bash abc length of arr1:3 abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫 烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫台政翎? length of arr2:218 ``` arr2末尾存放一个0也是可以的,这是因为'\0'的ASCII编码就是0,如下代码: ```c #include
int main() { char arr1[] = "abc"; printf("%s\n", arr1); char arr2[] = { 'a','b','c',0}; printf("%s\n", arr2); return 0; } ``` 此时可以发现arr2同样也是abc ```bash abc abc ```
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/212
上一篇:
C语言----Visual Studio 2017中使用scanf报错的解决办法
下一篇:
C语言----C语言中格式化输入输出详解
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件