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=]';
}
}
我想知道 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=]';
}
}