gpt4 book ai didi

c - scanf 在缓冲区中保留\n 字符

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

我是 C 的新手,我正在尝试使用 scanf 读取 6 个 integers 。但是,我注意到并阅读了 scanf 离开缓冲区中的 \n 字符(我的格式字符串中有)因此“读取”了用户的额外输入。在各种堆栈帖子上我读到这可以通过添加白色来简单地解决%d 格式前面的空格(例如:scanf("%d\n",&var);但这对我不起作用。我应该做什么以及为什么会发生这种情况?

这是我当前的代码:

#include <stdio.h>

int main(void) {
int A[2][3] = {};
int B[3][2] = {};
int i,j;
for(i=0; i < 2;i++) {
for(j=0; j < 3;j++) {
scanf(" %d\n", &A[i][j]);
getchar();
}
}
return 0;
}

最佳答案

格式字符串中的 \n 实际上导致了问题。读取一个整数后,格式字符串中的 \n 匹配任意数量的空白字符,因此函数不会返回,直到输入一些非空白字符。

按如下方式更改格式字符串:

scanf("%d", &A[i][j]);

%d 格式说明符隐式丢弃任何前导空白字符,因此不需要前导空格(只有 %c 才需要)。

关于c - scanf 在缓冲区中保留\n 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53263481/

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