C 我该如何在这里冲洗STDIN?
我有一个函数(在C中)从用户那里获取输入,(使用scanf)将其存储在无符号int中,并将输入返回给处理它的其他函数:C 我该如何在这里冲洗STDIN?,c,string,input,stdin,C,String,Input,Stdin,我有一个函数(在C中)从用户那里获取输入,(使用scanf)将其存储在无符号int中,并将输入返回给处理它的其他函数: unsigned int input(void) { unsigned int uin; scanf("%u", &uin); return val; } 我在想,既然我应该刷新stdin,我想使用一个while循环,使用getc,vis-a-vis: while (getc != '\n') { ... } 但是,我不知道如何: A
unsigned
int input(void)
{
unsigned int uin;
scanf("%u", &uin);
return val;
}
我在想,既然我应该刷新stdin,我想使用一个while循环,使用getc,vis-a-vis:
while (getc != '\n') {
...
}
但是,我不知道如何:
A) 在getc内部执行操作,比如我应该如何处理检查并将值连接到所获得的每个字符,或者,无论我是否要连接到getc,然后从那里连接,完全删除scanf
B) 这是否是最恰当的方法
能找个好心人给我一些建议吗:)
谢谢。我想在scanf格式字符串的末尾添加
%*[^\n]
。*
表示它应该读取但忽略匹配的输入,[^\n]
表示除换行以外的任何内容,就像在正则表达式中一样。我将在scanf格式字符串的末尾添加%*[^\n]
。*
意味着它应该读取但忽略匹配的输入,[^\n]
意味着除了换行符以外的任何东西,就像正则表达式一样。因此,我认为您应该研究fgets()函数,忘掉刷新stdin的所有事情。:)因此,我认为您应该研究fgets()函数,忘掉刷新stdin的所有事情。:)就这样?!哇,呵呵,我想我必须添加一些妙语,但是:unsigned int function(void){unsigned int x;scanf(“%*[^\n]u”,&x);return x;}应该可以工作,不是吗?不是--你可以将它添加到你已经拥有的格式字符串的末尾。@stdinflush这并不重要,但仅供参考,unsigned
与unsigned int
(同样的short
意思是short int
)。就是这样?!哇,呵呵,我想我必须添加一些妙语,但是:unsigned int function(void){unsigned int x;scanf(“%*[^\n]u”,&x);return x;}应该可以工作,不是吗?不是--你可以将它添加到你已经拥有的格式字符串的末尾。@stdinflush这并不重要,但仅供参考,unsigned
与unsigned int
相同(同样的short
表示short int
)。