2009-10-21 4 views
0

나는 사용자로부터 입력을 받고 (scanf를 사용하여) unsigned int에 저장하고, 그것을 처리하는 다른 함수에 입력을 반환하는 함수를 가지고있다. 내가 stdin을 플러시해야하는 것처럼 get-a-vis를 사용하여 while 루프를 사용하고 싶습니다.여기에 플러싱 STDIN에 대해 어떻게 생각합니까?

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

하지만, 어떻게해야하는지 잘 모르겠습니다 :

A) Do 검사를 처리하고 값을 연결하는 방법, 얻은 각 문자 또는 getc인지 아닌지 여부에 관계없이 getc 내부의 연산을 수행 한 다음 scanf를 완전히 제거합니다.

B) 이것이 가장 적합한 방법인지 여부.

어떤 친절한 사람이 내게 몇 가지 팁과 포인터를 줄 수 있을까요 :)

고마워.

+1

그래서, 나는 fgets() 함수를 살펴보고 플러시 표준화에 관한 모든 것을 잊어야한다고 생각한다. :) – BobbyShaftoe

답변

4

scanf 형식 문자열 끝에 %*[^\n]을 추가합니다. *은 일치하는 입력을 읽지 만 무시해야 함을 의미하며, [^\n]은 정규식처럼 개행을 제외한 모든 것을 의미합니다.

+0

그게 다야?! 와우, hehe, whizzbang을 추가해야한다고 생각했지만 : 부호없는 int function (void) { unsigned int x; 는 scanf ("%의 *의 [^ \ n] u는"&x); 반환 X;?. 가} 없이 작동해야 – stdinflush

+0

없음 - 당신은 형식 문자열의 * 끝 *에 이미 있다고 추가 –

+0

아, scanf ("% u % * [^ \ n]", &x); Brainfart : \ 건배 – stdinflush