gpt4 book ai didi

c++ - 每次循环输出一个少一个字符的char数组

转载 作者:行者123 更新时间:2023-11-30 05:09:26 25 4
gpt4 key购买 nike

我是 C++ 新手。尝试一个简单的问题:

Create a while loop that outputs a char array with one less character every time it loops until it holds only '\0' values within it.

答案是:

char s[] = "Hello World";
while (strlen(s))
{
s[strlen(s) - 1] = '\0';
cout << s << endl;
}

不过我没有在strlen下使用。特别是这部分:s[strlen(s) - 1] = '\0';谁能解释一下这部分是什么意思?

最后还有其他方法可以解决这个问题吗?

最佳答案

C 字符串有一个空终止符(即 \0)所以在你的情况下你的字符串实际上是:

H e l l o   W o r l d \0

strlen 计算到 first 空终止符 (\0) 的字符数,因此您的初始长度为 11。每次运行你的 while 循环你将空字符退回一个这样:

H e l l o   W o r l \0 \0
H e l l o W o r \0 \0 \0
H e l l o W o \0 \0 \0 \0

这实际上减少了 strlen 的大小。

同样 cout 打印到第一个空终止符 (\0)。

要注意的另一件事是 strlen 返回字符数,但是 c 字符串是基于 0 的,这就是为什么 -1s[strlen (s) - 1] = '\0';(指向 c 字符串中的最后一个字符)。

关于c++ - 每次循环输出一个少一个字符的char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46201457/

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