gpt4 book ai didi

c - 为什么 funciton gets 不起作用并跳过用户输入?

转载 作者:太空狗 更新时间:2023-10-29 15:42:23 25 4
gpt4 key购买 nike

#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char aa[35];
int a;
scanf("%d",&a);
gets(aa);
puts(aa);
}

它没有从用户那里获取字符串,但如果我在整数值之前获取字符串,它就可以正常工作。

最佳答案

Once scanf("%d",&a);stdin 中取出数字字符,形成 a 的 int ,完成。它不消耗可能跟在它后面的 '\n'

gets(aa);,消费数据直到'\n'

所以输入像1 2 3 x y Enter 下面会将 123 放入 a 并将 "xy" 放入 aa

scanf("%d",&a);
gets(aa);

在上面输入 4 5 6 Enter 将输入 456a""aa.


推荐使用fgets()并添加错误处理。

if (fgets(aa, sizeof aa, stdin) == NULL) Handle_EOF();
if (sscanf(aa, "%d", &a) != 1) Handle_Nonnumeric_Input();

if (fgets(aa, sizeof aa, stdin) == NULL) Handle_EOF();
aa[strcspn(aa, "\n")] = '\0'; // truncate potential \n

关于c - 为什么 funciton gets 不起作用并跳过用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35401600/

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