2009-10-21 42 views
0

我具有從用戶獲得輸入的功能(在C),(使用的scanf)並將其存儲在一個無符號的int和輸入返回到處理它的其它功能:我如何在這裏關於Flushing STDIN?

unsigned 
int input(void) 
{ 
    unsigned int uin; 

    scanf("%u", &uin); 
    return val; 
} 

我想知道,是我應該刷新標準輸入,我想用GETC,面對面的人使用while循環:

while (getc != '\n') { 
    ... 
} 

但是,我不知道如何:

A)在getc中執行操作,就像我應該如何處理檢查並將值連接到每個操作一樣角色得到了,或者無論我是否getc,然後從那裏連接,完全刪除scanf。 B)這是否是最恰當的方式來做到這一點。

可能某種人給我一些提示和指針:)

謝謝。

+1

所以,我認爲你應該看看fgets()函數,並忘記所有關於刷新標準輸入的業務。 :) – BobbyShaftoe 2009-10-21 00:41:43

回答

4

我會將%*[^\n]添加到scanf格式字符串的末尾。 *表示它應該讀取,但忽略匹配的輸入,[^\n]意味着除了換行符之外的任何內容,就像在正則表達式中一樣。

+0

就是這樣?!哇,嘿,我想我不得不添加一些whizzbang,但: unsigned int function(void){ unsigned int x; 的scanf( 「%* [^ \ n]的U」,&x); 返回X;? } 應該工作,沒有 – stdinflush 2009-10-21 01:03:16

+0

不 - 你添加格式字符串的結束* *您已經有了 – 2009-10-21 02:20:53

+0

啊,scanf(「%u%* [^ \ n]」,&x); Brainfart:\ 歡呼聲 – stdinflush 2009-10-21 06:56:08