gpt4 book ai didi

c - 输入字符串时程序不打印字符

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

所以我有这段代码:

#include <stdio.h>
int main() {
char B,y[2];
scanf("%c",&B);
scanf("%s",y);
printf("%c\n",B);
}

当我为 B 输入一个字符,如 S,然后为 y 输入一个字符,如 a,它工作正常。打印出来

a
S

但是,当我为 y 输入 2 个字符(如 ab)时,它会打印这两个字符,但不会打印出 S。它打印:

ab

我做错了什么吗?

最佳答案

首先,一个 char 数组,定义为 y[2] 只能容纳一个 char 而另一个空间是 reserved 用于终止该数组的 null 以作为 string。换句话说,它能容纳的字符串的最大长度只有1。

也就是说,按照理解,你应该改变

 scanf("%s",y);

 scanf("%1s",y);

限制输入长度。否则,您将遇到调用 undefined behavior 的缓冲区溢出。 .

为了详细说明在格式字符串中添加文字 11 表示最大字段宽度

引用 C11,章节 §7.21.6.2,fscanf(),(强调我的)

An input item is read from the stream, unless the specification includes an n specifier. An input item is defined as the longest sequence of input characters which does not exceed any specified field width and which is, or is a prefix of, a matching input sequence. [....]

关于c - 输入字符串时程序不打印字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41416341/

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