2014-09-25 3 views
1

내 프로그램은 scanf! = EOF 동안 .in 파일에서 표준 입력을 입력하는 동안 사용하고 있습니다. ./"file "과 같이. < file.in 문제는 내가 그 이후에 터미널에서 scanf해야한다는 것입니다. 표준 입력란에 EOF를 호출하여 file.in에서 스캔을 중지하거나 scanf를 지정하여 터미널이 아닌 파일을 읽을 수 있도록하는 방법이 있습니까? 나는 또한 대학 과제이므로 scanf 만 사용할 수 있습니다. 이것은 내 문제의 모의 프로그램입니다. 감사합니다EOF를 표준 입력으로 호출하는 방법

int main() { 
int arr[100]; 
int num; 
int count = 0; 
while(scanf("%d", &arr[count]) != EOF) { 
    count++; 
} 
printf("%d\n", arr[0]); 
scanf("%d", &num); 
printf("%d\n", num); 
} 

** 출력은 숫자의 첫 번째 목록 번호이며, scanf는 인쇄 번호에서 아무 값없이 완전히 무시됩니다.

+4

https://en.wikipedia.org/wiki/End-of-file 리눅스의 'ctrl-d', 윈도우의'ctrl-z' – clcto

+0

'while'은 예상대로 작동하지 않습니다. – edmz

+0

미안하지만 난 그냥 Ctrl-d 명령의 printf합니까? 죄송합니다 내가 새로운 오전 – Sarc

답변

0

scanf() 반환하는 읽기 수입니다. 당신은 무엇이 일어 났는지를 결정하기 위해 feof() 함수를 필요하거나/호출 stdinEOF을 시뮬레이션하기 위해 0

+0

자세히 설명해 주시겠습니까? – cpburnz

+0

함수 feof (FILE *)는 FILE *이 EOF이면 0이 아닌 값을 반환합니다. 루프 본문에서 scanf 호출을 feof()로 변경하십시오. –

+0

scanf()를 fscanf() –

0

으로는 scanf에서 반환 된 값을 비교, 당신은 창에서 Ctrl + Z를 누릅니다 경우. 그렇지 않으면 프로그램을 실행할 때 CTRL + D를 누릅니다.

+0

미안하지만 내 질문이 왜곡 된 것 같습니다. while 루프는 "file.in"파일을 끝내지 만 두 번째 scanf는 여전히 프롬프트에서 스캔하지 않습니다. – Sarc

+0

fclose를 사용하여'scanf '파일을 닫으십시오. –

+0

여전히 입력을 요구하지 않습니다. – Sarc

관련 문제