파일입출력 질문해봅니다..
#include
int main()
{
FILE *fp1, *fp2;
char *string = "Hello World!!";
long count, last;
char ch;
if ((fp1 = fopen("a.txt", "rb+")) == NULL) { // "a.txt" 파일을 읽고 쓰기가 가능하도록 파일을 개방한다.
printf("File Open Error!!\n");
fclose(fp1);
return 0;
}
fputs(string, fp1); // str에 저장되어 있는 문자열을 fp1 파일포인터에 연결된 파일에 출력한다.
if ((fp2 = fopen("b.txt", "wb")) == NULL) { // "b.txt" 파일을 쓰기 위해 파일을 개방한다.
printf("File Write Error!!\n");
fclose(fp2);
}
fseek(fp1, 0, SEEK_END); // 파일 위치 지시자를 파일 끝에 가리키게 한 후
last = ftell(fp1); // 현재 파일 위치 지시의 크기를 리턴하여 last에 대입.(총 바이트가 저장됨)
for(count=last-1; count >= 0; count--) { // // 파일의 내용을 역으로 출력한다.
fseek(fp1, count, SEEK_SET); // count를 감소 시키면서 파일위치지시자를 왼쪽으로 이동시킨다.
if(ch=fgetc(fp1) != NULL) { // 현재 파일 위치 지시자가 가리키고 있는 문자를 ch에 저장한다.
fputc(ch, fp2); // 다시 ch에 저장되어 있는 문자를 fp2 파일 포인터에 연결된 파일(Test2.txt)에 저장한다.
}
}
// 파일 입출력이 끝났으므로 파일을 닫는다.
fclose(fp1);
fclose(fp2);
}
--------------------------------------------------------------------------------
a.txt 에 문자열을 입력 받아서 b.txt 에 그 문자열을 역으로 출력하는 프로그램을 만들었는데요..
실행해보면 a.txt에 fputs() 함수로 파일로 출력해둔 문자열은 그대로 들어 있는데
b.txt 파일을 열어보면 $$$$$$$$$ 이런 이상한 문자가 들어가있네요;;
먼가 잘못된거 같은데 어디 부분을 고쳐야될지 모르겠습니다..
또 제가 짠 소스를 좀 더 보기좋게 변형하려면 어떻게 수정해야 될까요?
답변 부탁드립니다 ~
이렇게 하면 되네요.
fread와 fwrite를 사용하시는 방법이 좀 더 수월할겁니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
오~ 감사합니다
덕분에 해결했습니다~
댓글 달기