2017-03-27 9 views
-2

다른 파일을 읽고 인쇄하려고하는데 모든 줄을 따로 따로 뒤집기 위해 노력하고 있지만 줄을 인쇄하고 마지막 줄만 뒤집을 수 있습니다. 파일의 모든 줄을 뒤집기 위해 내가해야 할 일에 대한 제안? 나는()는 동일한 형식이지만 반전 (즉 같은 대소 문자, 숫자 및 기호)여러 줄로 된 파일을 뒤집어서 마지막 줄만 뒤집으려고 시도합니다.

int main() { 
    int i=0, j, len; 
    char data[80]. rev[]; 
    FILE *fp = fopen("fileread", "r"); 
           // reads and prints out fileread 
    while(!feof(fp))){ 
     fgets(data, 80, fp); 
     puts(data); 
    } 
        // reverse hopefully 
    while(data[++i] != '\0;); 
    while(i>=0); 
    rev[j++] = data[--j]; 
    rev[j] = '\0'; 
    printf("String Reversed: %s\n, rev); 
    fclose(fp0); 
} 

여기에 내가 원하는 걸의 예를 유지해야 strrev을 사용할 수 없습니다 *.

(텍스트 파일)

Hello World! 
I am $till around. 
running @ Best Speedz 
kayak 

예상 출력 :

!dlroW olleH 
.dnuora llit$ ma I 
zdeepS tseB @ gninnur 
kayak 
+0

이미지 또는 기타와 같은 질문에 코드를 게시하십시오. –

+0

아니요 아니요 아니요. 코드는 질문의 * 내부 *에 속합니다. [mcve]를 게시하십시오. – StoryTeller

+0

[왜 while (! feof (file))가 항상 잘못 되었습니까?] (http://stackoverflow.com/questions/5431941/why-is-while-feof-file-always-wrong)를 참조하십시오. 'while (fgets (data, sizeof data, fp)! = NULL) {...}'과 같은 것이 더 좋습니다. 그리고'data' 문자열의 끝에'fgets'에 의해 유지되는'newline '을 조심하십시오. –

답변

0

코드는 반대로 행의 인쇄는 while 루프를 벗어난다. 따라서 마지막 행만 인쇄합니다.

while 루프에서는 fgets(...)!=NULL을 테스트합니다.

줄이있는 경우 줄 바꿈을 제거하는 것을 잊지 마십시오. 줄 바꿈을하면 깜짝 놀랄 것입니다.

마지막으로, 가독성을 위해 별도의 함수를 만들어 문자열의 내부 반전을 수행하십시오.

+0

감사합니다. 내 코드의이 섹션을 가져올 수 없지만 NULL 문으로 변경하면 많은 도움이되었습니다! –