gpt4 book ai didi

c - 在 C 帮助中获取一行用户输入。

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:28 25 4
gpt4 key购买 nike

我浏览了整个网络并尝试了很多不同的方法,但它们似乎从来没有奏效。每次我运行该程序时,它都会跳过为学生姓名输入内容的机会,并直接进入部门。此外,我们是 C 的新手,确实被告知要使用 printf 和 scanf,但是当用户输入诸如 joe shmo 之类的名称时,它会执行一些奇怪的操作。

fputs("Please enter the students name: ", stdout);
fflush(stdout);
fgets(studentArray[empty].name, sizeof studentArray[empty].name, stdin);

printf("\nPlease enter the students department: ");
scanf("%s", studentArray[empty].department);
printf("\nPlease enter the students rank: ");
scanf("%d", &studentArray[empty].rank);

编辑:奇怪的是,如果我输入两个名字,即 joe shmo,它将以 joe 作为名字并自动将 shmo 添加到部门。 studentArray 是我制作的一个结构数组...

typedef struct {
char name[MAX_NAME_LENGTH];
char department[MAX_DEPT_LENGTH];
int rank;
} student;

最佳答案

当程序到达 fgets() 时,我打赌输入缓冲区中有一个待处理的 '\n' 来自前一个 scanf()。我建议你摆脱那个 '\n' 和任何以前的输入。

例如,用

int getridofextrainput(void) {
int ch;
while (((ch = getchar()) != '\n') && (ch != EOF)) /* void */;
return ch;
}

然后在您认为有必要的代码中使用该函数(在 fgets 之前)。

关于c - 在 C 帮助中获取一行用户输入。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5863034/

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