gpt4 book ai didi

c - fgets() 和 scanf ("%[^\n]")都被跳过

转载 作者:行者123 更新时间:2023-11-30 18:10:32 25 4
gpt4 key购买 nike

我正在开发我的 c 项目,刚刚开始。我需要从用户输入中获取“名称”。

fgets() 在主函数内部工作正常,但在主函数外部使用时会跳过。我发现了很多相关问题,所以我阅读了所有答案,但无法解决我的问题。

阅读一些答案后,我尝试使用“fflush(stdin)”,scanf(“[%^\n]”)但没有再爱。

void newacc()
{
struct tenant new;
printf("Enter Name:");
fgets(new.name,20,stdin);
printf("\nEnter Phone number:\n");
scanf("%d",&new.ph);
printf("Enter Rental Date (DD-MM-YYYY):\n");
scanf("%d%d%d",&new.td.dd,&new.td.mm,&new.td.yy);
}

最佳答案

我不熟悉 scanf,但你是第二个 scanf (“%d%d%d”)似乎容易出错。你怎么知道某些内容被跳过了?

此版本要求 DD、MM 和 YYYY 之间有空格(“%d %d %d”),以便清楚地分隔每个数字。您收集输入的方式还存在其他问题,但我没有看到任何跳过。

#include <stdio.h>

void newacc()
{
char name[20];
int phone;
int day;
int month;
int year;

printf("Enter Name: ");
fgets(name,20,stdin);
printf("Enter Phone number: ");
scanf("%d",&phone);
printf("Enter Rental Date (DD MM YYYY):\n");
scanf("%d %d %d",&day, &month, &year);
printf("%s %d %02d-%02d-%04d\n", name, phone, day, month, year);
}

int main(void)
{
newacc();
return (0);
}

关于c - fgets() 和 scanf ("%[^\n]")都被跳过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661591/

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