刚才试了一下 在我电脑的编译器上 sizeof是字符数组的长度,不管是大于还是小于5 都可以输出定义的长度值
而strlen有的时候输出6了
我打印后面内存看了一下,当后面一个值是5 asc对照表是不可显示控制字符 请求ENQ的时候 strlen是可以输出5的, 估计跟strlen的实现有关吧。。
【 在 shouge111 的大作中提到: 】
: 标 题: 请教一个字符串的问题
: 发信站: 水木社区 (Tue Jul 19 23:50:54 2022), 站内
:
: 变量a长度是5,那么根据教材,它只能存储1234,最后一个存储单元应该存储字符串结束标志\0。
: 但是实际运行,a存储了12345.这是怎么回事呢?printf打印也是打印了12345
:
: #include<stdio.h>
: #include<string.h>
: int main(void)
: {
: int num1,num2;
: char a[5] = "12345";
: printf("%s",a);
: num1=strlen(a);
: num2=sizeof a;
: return 0;
: }[upload=1][/upload]
: --
:
: ※ 来源:·水木社区
http://www.mysmth.net·[FROM: 112.32.8.*]
:
--
修改:Ksharp FROM 182.204.63.*
FROM 182.204.63.*