fgets() 从键盘读取换行符

fgets() Read New Line Char From Keyboard

我想知道 fgets() 是否从用户输入(即键盘)中读取换行符。这是我写的一些示例代码:

while (1) {
  char userInput[3] = {'[=10=]', '[=10=]', '[=10=]'};

  fgets(userInput, 3, stdin);
  flushStdin();
  printf("%s\n", userInput);
}

如果我输入“2”,系统会再次提示我输入另一个字符,结果如下:

$ 2
$ 3
  2

$

我理解fgets()是如何工作的,所以可能是我的逻辑不正确。期望的输出是:

$ 2
  2

$

我认为 fgets() 最多读取比给定的缓冲区大小少 1。当您按回车键时,它将从输入中获取 \n 。您可以使用类似这样的方法来清理字符串输入或使用 scanf() 进行 int 输入

void readLine(char* buffer, int bufferLength, FILE* file)
{
    fgets(buffer, bufferLength, file);

    int len = strlen(buffer);
    if(len > 0 && buffer[len - 1] == '\n'){
        buffer[len - 1] = '[=10=]';
    }
}