c - scanf() 并在 C 中的一个函数中清除输入缓冲区?
问题描述
我有以下想法:
我有一个清除输入缓冲区的功能:
void clear_inputBuffer()
{
char c;
while ( (c = getchar()) != '\n' && c != EOF);
}
而不是为每个输入都写
scanf("%d", &selection);
clear_inputBuffer();
我想要一个包含两者的功能。像这样的东西:
int terminalInput(const char *format, ...) {
int count = 0;
va_list args;
// Pass variable parameters
va_start(args, format);
count = scanf(format, args);
va_end(args);
clear_inputBuffer();
return count;
}
该函数返回 1,但无论正确的输入是什么,“test”也返回 1。
int main(int argc, const char * argv[]) {
int test;
printf("number:");
terminalInput("%d", &test);
printf("Input: %d\n", test);
return 0;
}
终端输出:
$ ./a.out
number:345
Input: 1
解决方案
推荐阅读
- excel - 根据 x x y x z 单元格值填充单元格
- c# - C#:可空结构的默认文字和类型推断
- javascript - 从另一个嵌套的 json 对象创建一个嵌套的 json 对象 [HOLD]
- amazon-web-services - 我可以让 Amazon SageMaker 根据历史数据而不是概率分数来提供推荐吗?
- javascript - 在 img 标签中显示 blob (javascript)
- linux - 在ubuntu14.04上安装vscode 1.32的依赖是什么
- laravel - 将 putFileAs 与外部文件 Laravel 一起使用
- loops - 在 for 循环中使用传递的参数 - React Native
- objective-c - 关于 objectAtIndex 的 NSMutableArray 的 NSRangeException:0
- docker - docker/微服务中的 RabbitMQ 监听器