fgets从提示符读取换行符

时间:2018-12-11 13:06:36

标签: c shell fgets stdio

我应该提到 是在不同的环境中工作的:在我们的编程类中,我们通常使用IDE代码块(这很糟糕),因此我只使用gcc编译器和vim终端(我在拱门上)。直到最近,当我不得不读一个包含空格的字符串时,我才遇到问题。为此,我认为使用fgets()函数将是一个好主意,但这会带来一些问题。代码如下所示:

void addStudent() {
    struct Student student;
    printf("Name of student: ");
    fgets(student.name, 25, stdin);
}

但是,这不会提示我在shell中进行输入,它只是继续并立即读取换行符\n。你们知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

正如评论所指出的那样,将scanf()fgets()之类的功能组合在一起是不好的。调用scanf()时,它将在输入缓冲区中保留换行符,然后fgets()立即读取它,从而导致提示用户失败。