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 하고 더하면 어떻게 되는 알려주시면 감사하겠습니다.