2012-04-17 3 views
1

나는 명령 줄에서 모든 입력을 가져 와서 링크 된 목록에 넣으려고합니다. 명령 줄에서 숫자가이 형식 0-1 2-3 4-9 여기 ETCC 의있는 것은 내가 두 변수의 숫자 쌍을 저장하기 위해 무슨 짓을 : 이제명령 행에서 모든 입력에 대해 scanf를 계속 수행하십시오. C 프로그램

scanf("%d-%d", &a, &b); 

이 scanf와 문입니다 루프 내부 및 내 질문은 : 루프의 조건은 무엇입니까? 모든 입력이 끝날 때까지 scanf를 계속하고 싶습니다.

미리 감사드립니다.

+1

"모든 입력이 완료 될 때까지"를 정의 할 수 있습니까? 이 질문에 답하면 루프 상태가 나타날 것입니다 –

답변

3

scanf의 유명한 악명이없는 특성은 문자열이 아닌 데이터를 읽을 때 입력 버퍼에 데이터를 남겨 두는 것입니다 (예 : int). 여기에서 확인하십시오 : Leave data in input buffer.

이 시도 :

do 
{ 
    int x = scanf("%d-%d", &a, &b); 
}while ((x != EOF) && (getchar() != '\n')); 

당신은 EOF와 scanf 출력을 비교해야합니다. 가장 중요한 것은 입력 버퍼에 scanf이 남은 '\n'을 플러시 아웃해야한다는 것입니다.

+0

그리고이 EOF는 어떻게됩니까? 행 하나당 숫자 쌍을 입력하고 아무 것도 멈추고 싶지 않을 때 줄 바꿈을 계속하면. – Tudor

+1

@ Tudor'Ctrl-D'? –

+0

@ 튜 도르, 이걸로 다시하십시오. –

관련 문제