#예제파일

티모티모· 4년

질문C언어 예제 소스 질문

dog.txt라는 텍스트 파일에서 "dog"라는 문자열을 모두 "rabbit"으로 변환하고, rabbit.txt라는 이름으로 저장하는 프로그램을 만드는 프로그램 입니다.     (dog.txt의 내용)  The quick brown fox jumps over the lazy dog.  I like cat and dog. ----------------------------------------------------------------------------------------------     1. #include <stdio.h> 2. #include <string.h> 3.  4. int main() 5.     FILE *fpr, *fpw;     /* 읽기, 쓰기 파일 포인터 */ 6.     char bufr[256], bufw[256];     /* 읽기, 쓰기 버퍼*/ 7.     char str1 [] = "dog";    /* 바꿀 원래 문자*/ 8.     char str2 [] = "rabbit";     /* 바꿔 넣을 문자*/ 9.     char *p, *q; 10. 11.     if(! (fpr=fopen("dog.txt", "r"))) { 12.          printf("파일을 읽어 오지 못했습니다."); 13.          return 1; 14.     } 15.     if(! (fpw=fopen("rabbit.txt", "w"))) { 16.          printf("파일을 읽어 오지 못했습니다."); 17.          return 1; 18.     } 19.     while(1) { 20.          fgets(bufr, 256, fpr); 21.          if(feof(fpr)) 22.               break; 23.          strcpy(bufw, bufr); 24.          p = strstr(bufr, str1); 25.          if(p) { 26.               q = bufw + (p - bufr); 27.               strcpy(q, str2); 28.               strcpy(q+strlen(str2), p+strlen(str1)); 29.          } 30.          fprintf(fpw, "%s", bufw); 31.     } 32.     fclose(fpr); 33.     fclose(fpw); 34.     return 0;   -------------------------------------------------------------------------------------- 일단 제가 아는데까지 적어 봤는데 26행 ~ 28행을 모르겠어요 사실 24행도 긴가 민가 한데  맞는지 봐주셨으면 좋겠습니다. !    20행: 읽어올 문자수 정하고 읽어온 파일을 bufr 에다 집어넣어라 21행~22행: fpr을 끝까지 읽으면 while문을 나와라 23행: bufr을 bufw에다 복사해라 24행: bufr에서 "dog"이라는 문자열을 찾고 그위치의 포인터 반환 하고 p에다 대입해라 그럼 여기서 포인터p는 dog. I like cat and dog.에 포인터 주소를 반환 받은거잖아요?  25행: p가 참이면 if 문을 실행시켜라    26행: p - bufr 배열을 마이너스 하면 어떤식으로 되는지  이 값들을 bufw 하고 더하면 어떻게 되는 알려주시면 감사하겠습니다.         
1.1K
1
0
라이너
라이너·2021-05-23
대략 찾으려는 문자열의 위치만큼 잘라서 붙이는 것 같은데 다소 복잡하게 만들어져있는 것 같습니다. 재사용 가능한 코드는 아닌 것 같아서 개념 정도만 이해하고 넘어가셔도 좋지 않을까 싶습니다.