gpt4 book ai didi

c - 为什么这两个看似相同的声明会导致不同的字符串长度?

转载 作者:行者123 更新时间:2023-11-30 20:23:04 26 4
gpt4 key购买 nike

谁能解释一下为什么这段代码:

char    t1[20];
char t2[20];

memset(t1, 'B', sizeof(t1));
memset(t2, 'B', sizeof(t2));
printf("%lu\n", strlen(t1));
printf("%lu\n", strlen(t2));

结果:

22
21

谢谢

最佳答案

strlen期望得到一个(指向 C 字符串的指针)C 字符串。 C 字符串是一个以空字符 '\0' 结尾的 char 数组。

当您memset您的char数组时,您只需在每个元素中写入一个'B',因此这些数组都不是C字符串。将它们传递给 strlen 是未定义的行为。

为了解决此问题,请相应地设置每个数组的最后一个元素:

t1[19] = '\0';
t2[19] = '\0';

关于c - 为什么这两个看似相同的声明会导致不同的字符串长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37231392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com