我在获取用户输入时遇到问题。我使用 scanf
函数从用户那里获取输入,我认为这是问题的原因。
我希望两个提示位于不同的行上。
以下代码是该问题的一个简单示例:
#include <stdio.h>
int main(void)
{
char name[20];
int age = 0;
int index;
printf("1- Insert a new student.\n");
printf("2- Delete a student.\n");
printf("3- Show all students.\n");
printf("4- Exit.\n\nChoose: ");
scanf("%d", &index);
printf("Enter your name: ");
scanf("%20[^\n]s", name);
//fgets(name, 20, stdin); // <--- Does the same thing.
printf("Enter your age: ");
scanf("%d", &age);
printf("Name: %s, Age: %d\n", name, age);
return 0;
}
结果为文本:
1- Insert a new student.
2- Delete a student.
3- Show all students.
4- Exit.
Choose: 2
Enter your name: Enter your age:
图片:
为什么两个提示显示在同一行?
最佳答案
正如其他评论所建议的那样,您最好使用 %19[^\n]
。但是,这样做仍然会导致您的问题。这应该有效:
#include <stdio.h>
int main(void) {
int age = 0;
int index;
char name[20];
printf("1- Insert a new student.\n");
printf("2- Delete a student.\n");
printf("3- Show all students.\n");
printf("4- Exit.\n\nChoose: ");
scanf("%d", &index);
printf("Enter your name: ");
scanf(" %19[^\n]", name);
printf("Enter your age: ");
scanf("%d", &age);
printf("Name: %s, Age: %d\n", name, age);
return 0;
}
注意 scanf 函数中添加的前导空格。前导空格用于消耗标准输入中可能由先前用户输入留下的任何尾随字符。
Program output
clang-7 -pthread -lm -o main main.c
./main
1- Insert a new student.
2- Delete a student.
3- Show all students.
4- Exit.
Choose: 1
Enter your name: jimm
Enter your age: 12
Name: jimm, Age: 12
希望对您有所帮助!
关于c - 为什么这个程序中接收输入的两个提示显示在同一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58272221/