我正在开发我的 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/