c - fgets() 从键盘读取新行字符



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

while (1) {
  char userInput[3] = {'', '', ''};
  fgets(userInput, 3, stdin);
  flushStdin();
  printf("%sn", userInput);
}

如果我键入"2",系统会重新提示我输入另一个字符,结果如下:

$ 2
$ 3
  2
$

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

$ 2
  2
$

我认为 fgets(( 的读数将比给定的缓冲区大小少 1。当您按回车键时,它将从输入中获取 。你可以使用这样的东西来清理字符串的输入,或者使用 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] = '';
    }
}

最新更新