파일 복사 질문있습니다
슬옹
질문 제목 : 바이너리파일을 복사하는 소스인데 질문있어요질문 내용 :
#include stdio.h
int main()
{
file* f1 = fopen(d:\\sleep away.mp3,rb);
file* f2 = fopen(d:\\음악파일ㅋㅋㅋ.mp3,wb);
int cnt;
char buf[20];
// 해당파일이 없으면...
if(f1 == null || f2 == null){
puts(파일오픈실패!!!);
return -1;
}
while(1){
cnt = fread( (void*)buf,1,sizeof(buf),f1);
if(cnt sizeof(buf)){ // cnt가 20개의 데이터보다 작다면
if(feof(f1) != 0){ // 파일의 끝에 도달했다면
fwrite( (void*)buf,1,cnt,f2); // 1바이트 크기의cnt개의 데이터를 buf로부터 읽어와서 f2에 저장해라
puts(파일복사 완료!!!);
break;
}else // 파일의 끝이 아니라면
puts(파일복사 실패!!!);
break;
}
fwrite( (void*)buf,1,sizeof(buf),f2);
}
return 0;
}
위 소스는 에러없이 실행이 됩니다.
지금 , fread 와 fwrite 함수를 배우고 있는데요 .. 이해가 안가는 부분이 있어 글을 올립니다
cnt = fread( (void*)buf,1,sizeof(buf),f1);
-- 1바이트 크기의 데이터 20개를 f1으로부터 읽어서 buf에 저장해라
-- 성공시 20이 실패 및 파일 끝 도달시 20보다 작은 값이 반환
fwrite( (void*)buf,1,sizeof(buf),f2);
-- 1바이트 크기의 데이터 20개를 buf로부터 읽어서 f2에 저장해라
제가 주석처리를 했는데요.. 주석이 맞는지 틀린지 수정좀 해주셨으면 좋겠습니다.
-
달님 2023-12-14
size_t fread(void *ptr, size_t size, size_t nobj, FILE *fp);
인수
ptr - 화일에 읽은 자료를 저장할 버퍼의 시작주소
size - 입력 단위의 크기
nobj - 갯수
fp - 화일포인터
반환값
입력에 성공한 입력 단위의 갯수
size_t fwrite(void *ptr, size_t size, size_t nobj, FILE *fp);
인수
ptr - 출력할 데이터의 시작주소
size