我想知道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
$
答案 0 :(得分:0)
我认为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';
}
}