gpt4 book ai didi

c - 为什么输出长度是 6?

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:04 24 4
gpt4 key购买 nike

我写了一个简单的程序来计算字符串的长度。我知道还有其他方法。但我只想知道为什么这个程序会给出这个输出。

#include <stdio.h>
int main()
{
char str[1];
printf( "%d", printf("%s", gets(str)));

return 0;
}

输出:

(null)6

最佳答案

除非您总是从标准输入传递空字符串,否则您将调用未定义的行为,因此输出几乎可以是任何内容,并且也可能会崩溃。 str 不能是多于零个字符的格式正确的 C 字符串。

char str[1] 为单个字符分配存储空间,但该字符必须是 NUL 字符才能满足 C 字符串约束。您需要创建一个足够大的字符数组来容纳您使用 gets 编写的字符串。

"(null)6"作为输出可能意味着 gets 返回了 NULL 因为它由于某种原因失败或者堆栈以这样的方式损坏返回值被零覆盖(根据未定义的行为解释)。 “(null)”后面的 6 是预期的,因为 printf 的返回值是打印的字符数,而“(null)”是六个字符长。

关于c - 为什么输出长度是 6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20780433/

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