gpt4 book ai didi

c - 在C中以固定长度的字符串作为输入

转载 作者:太空宇宙 更新时间:2023-11-04 08:02:29 25 4
gpt4 key购买 nike

我想在 C 中输入一个字符串并打印它。我的示例代码如下:

#include<stdio.h>
main()
{
char a[5];
scanf("%[^\n]a",a);
printf("%s",a);

}

问题是,我最初假设字符串长度为 5。但如果我采用长度超过 5 的字符串,它会正常工作。为什么会这样?允许的字符串长度不应该小于 5 吗?

最佳答案

Why is this happening?

未定义的行为是未定义的。

Shouldn't the permitted string length be less than 5?

谁允许的?您将 a 的第一个元素的地址(隐式地)传递给 scanf()。您需要明确告诉它可以扫描多少。

a 也扫描一个 float 。要扫描“字符串”,请使用 s

如果您定义了一个 char[5] 允许长度为 5-1=4 的可能“字符串”。 C 需要 1 个 char 来存储“字符串”的 0 终止符。

要告诉 scanf() 只扫描 4 个 char 使用 %4s

关于c - 在C中以固定长度的字符串作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45252851/

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