2011-11-07 4 views
3

.txt 파일을 C 개로 읽는 방법을 배우고 싶습니다. 각 줄의 정보를 루프 등에서 사용할 수 있습니다. 숙제를 할 수 없습니다. 이것은 천문학 패키지를위한 스크립트를 작성하는 프로젝트를 위해 알아 내야합니다.줄 단위로 텍스트 파일에서 정보 읽기

이렇게하는 방법을 배우려면 숫자가 1,2,3,4,5,6,7,8,9 인 각각 list.txt이라는 파일을 각각 별도의 줄에 만들고이 프로그램을 각 행의 값 나는 또한 sum.txt이라는 출력 파일을 만들었고이 프로그램은 줄을 더하고 합계를 출력 파일에 인쇄합니다.

프로그램을 실행할 때 오류가 발생하며이 문제를 완전히 이해하지 못하여 문제가 무엇인지 잘 모르겠습니다. 나는이 책을 C 책에 담아 내 PC에서 실행되도록 수정하려고 시도했다.

내가 할 수 있어야하는 이유는 목록의 각 줄마다 정보를 가져와야하기 때문입니다 (줄마다 한 줄씩 포함). 그러나 나는 먼저 숫자로 그것을 배우는 것을 배우고 싶다. 당신이 fclose (그리고 아마도 fprintf) while 루프 밖으로, 당신 때문에 이동해야

ofp = ("sum.txt", "w"); 

을 또한 :

#include<stdio.h> 

int main(void) 
{ 
    int a, sum = 0; 
    FILE *ifp, *ofp; 
    ifp = fopen("list.txt", "r"); 
    ofp = ("sum.txt", "w"); 
    while (fscanf(ifp, "%d", &a) == 1) 
    { 
     sum += a; 
     fprintf(ofp, "The sum is %d. \n", sum); 
     fclose(ifp); 
    } 
    return 0; 
} 
+0

어떤 오류가 발생하고 있습니까? 또한, 당신은 절대로'ofp'를 닫지 않습니다. – Hasturkun

+0

어떤 오류가 발생 했습니까? – AShelly

+0

오류가 발생하면 오류 메시지가 무엇인지 공유하십시오. –

답변

6

현재 fopen를 작성하는 잊었 : 여기

코드입니다 모든 행을 읽은 후에 파일을 닫고 싶을뿐입니다. 오류 검사를하고 당신이하기 전에 파일을 연 것을 확인하는 것을 잊지 마세요 또한

} // end of while loop 
fprintf(ofp, "The sum is %d. \n", sum); 
fclose(ifp); 

을 :

+0

감사합니다. 그래도 여전히 작동하지 않습니다. – none

+0

@LauraBoyle : 입력 파일의 fopen이 실패했을 수 있습니다. list.txt 파일이 실행 파일과 동일한 디렉토리에 있는지 확인하십시오. – codaddict

+0

@codaddict : 그게 다야! 고맙습니다! 내가 잘못된 디렉토리에 있었기 때문에 (list.txt) .txt로 저장했습니다. – none

0

당신은 루프 후 입력 파일을 닫고 너무 루프 외부 fprintf를 이동해야 그들에게 입을 열어 라.

관련 문제