我正在阅读结构数组中的标准输入学生。在为一个学生介绍了详细信息后,我询问了另一个学生的详细信息。如果选择是Y,我会添加新学生,如果选择是N,break。但是,如果选择只是 ENTER 怎么办?如何检测换行符?我尝试使用 getchar(),但它跳过了 stdin 的第一次读取。当我调试时,它不会停止到第一行 test=getchar(),而是停止到第二行。
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <stdlib.h>
struct student
{
char name[20];
int age;
};
int main()
{
struct student NewStud[5];
char test;
int count=0;
for(count=0;count<5;count++)
{
printf("Enter the details for %s student: ",count>0?"another":"a");
printf("\nName : ");
scanf("%s",NewStud[count].name);
printf("\nAge : ");
scanf("%d",&NewStud[count].age);
printf("Would you like to continue? (Y/N)");
test=getchar();
if(test=='\n')
{
printf("Invalid input. Would you like to continue? (Y/N)");
test=getchar();
}
while(tolower(test) !='n' && tolower(test) != 'y')
{
printf("Invalid input.Would you like to continue? (Y/N)");
test=getchar();
}
if(tolower(test) == 'n')
{
break;
}
if(tolower(test) == 'y')
{
continue;
}
}
getch();
}