C语言字符串末尾空字符记录

C语言中字符串的存储方式记录

一直以来,对于C中的字符串存储的形式模模糊糊的,所以经常会有越界的错误发生,
这几天静下心来,看了看基本C的参考书,现在记录一下对于字符串的存储,方便自己以后回顾。

例:

char test[10];
scanf("%s", char);

这种情况下,如果输入1234567890就会出错了,为什么呢?

在这里插入图片描述

换一个输入123456789试试看。
在这里插入图片描述
程序并没有问题。

问题其实就在于C对于字符串的存储,对于字符串的最后个存储空间,必须保留一个\0空字符,
也就是说char test[10],我们可以填充其中的9个字符,在最后一定要保留1一个\0,但是这个
空字符我们并不要自己写入,计算机会自己写入。

符号常量使用情况也是这样:
在这里插入图片描述
TEST符号常量,用strlen测试出长度为14,可是sizeof出的存储大小是15,原因就是刚才提到的,
由于字符常量没有添加\0,计算机会在末尾给他添加上空字符。

出于好奇,我还测试了下,如果手动加上空字符,情况会如何呢?
在这里插入图片描述

在刚才的TEST符号常量后加了个/0,结果很明显,除了自己添加的\0,计算机仍然会再添加一个
\0。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值