gpt4 book ai didi

c - 在gets之前输入C.scanf。问题

转载 作者:行者123 更新时间:2023-11-30 16:28:49 26 4
gpt4 key购买 nike

我对 C 还很陌生,在向程序输入数据时遇到问题。

我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void) {
int a;
char b[20];

printf("Input your ID: ");
scanf("%d", &a);

printf("Input your name: ");
gets(b);

printf("---------");

printf("Name: %s", b);

system("pause");
return 0;
}

它允许输入ID,但它只是跳过其余的输入。如果我像这样更改顺序:

printf("Input your name: ");
gets(b);

printf("Input your ID: ");
scanf("%d", &a);

它会起作用的。虽然,我不能改变顺序,我需要它按原样。有人能帮我吗 ?也许我需要使用一些其他功能。谢谢!

最佳答案

尝试:

scanf("%d\n", &a);

gets 仅读取 scanf 留下的 '\n'。另外,您应该使用 fgets 而不是 gets: http://www.cplusplus.com/reference/clibrary/cstdio/fgets/以避免可能的缓冲区溢出。

编辑:

如果以上方法不起作用,请尝试:

...
scanf("%d", &a);
getc(stdin);
...

关于c - 在gets之前输入C.scanf。问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52212130/

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