【发布时间】:2021-11-19 02:11:27
【问题描述】:
int prompt(const char *output_message, char *input, const int MAX_SIZE)
{
printf("%s", output_message);
int i = 0;
char ch = '\0';
while (1)
{
ch = (char)getchar();
if (ch == '\n' || ch == EOF)
{
break;
}
else if (i < (MAX_SIZE - 1))
{
input[i++] = ch;
}
}
input[i] = '\0';
return i;
}
我编写了这个函数来获取用户输入的输入字符串。因此 getchar() 正在遍历缓冲区,直到到达换行符或文件末尾。我的问题是刷新输入缓冲区是否意味着将 FILE 指针(或那里的任何实现)从缓冲区中当前写入的部分移开,就像我对 getchar() 所做的那样? “刷新输入缓冲区”究竟是什么意思?
【问题讨论】:
-
与您提出的问题无关,但是:您需要将
ch声明为int类型,并且在调用getchar时不需要(char)演员表。 -
@SteveSummit 但是当我使用 input[i++] = ch;所以我认为这不是一个好主意。
-
@SteveSummit 编译器给了我一个警告。
-
警告:隐式转换丢失整数精度:'int' to 'char' [-Wimplicit-int-conversion] input[i++] = ch;