我应该提到 是在不同的环境中工作的:在我们的编程类中,我们通常使用IDE代码块(这很糟糕),因此我只使用gcc编译器和vim终端(我在拱门上)。直到最近,当我不得不读一个包含空格的字符串时,我才遇到问题。为此,我认为使用fgets()
函数将是一个好主意,但这会带来一些问题。代码如下所示:
void addStudent() {
struct Student student;
printf("Name of student: ");
fgets(student.name, 25, stdin);
}
但是,这不会提示我在shell中进行输入,它只是继续并立即读取换行符\n
。你们知道如何解决这个问题吗?
答案 0 :(得分:1)
正如评论所指出的那样,将scanf()
与fgets()
之类的功能组合在一起是不好的。调用scanf()
时,它将在输入缓冲区中保留换行符,然后fgets()
立即读取它,从而导致提示用户失败。