我想知道fgets()
是否从用户输入(即键盘)读取新行字符。这是我编写的一些示例代码:
while (1) {
char userInput[3] = {'\0', '\0', '\0'};
fgets(userInput, 3, stdin);
flushStdin();
printf("%s\n", userInput);
}
如果我输入“2”,系统会重新提示我输入另一个字符,结果如下:
$ 2
$ 3
2
$
我理解fgets()
是如何工作的,所以我的逻辑可能不正确。所需的输出是:
$ 2
2
$
最佳答案
我认为 fgets() 读取的内容最多会比给定的缓冲区大小小 1。当您按 Enter 键时,它将从输入中获取\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] = '\0';
}
}
关于c - fgets() 从键盘读取新行字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42079925/