윈도우즈 파일 복사 질문입니다,,

hanty11의 이미지

void main() {
	FILE *in;
	FILE *out;
	in = fopen("LastNight.wav", "r");
	out = fopen("res.wav", "w");
 
	while(!feof(in)){
		char temp;
		fread(&temp, sizeof(temp), 1, in);
		fwrite(&temp, sizeof(temp), 1, out);
	}
	fclose(in);
	fclose(out);
}

보시다 시피 진짜 단순하게 in에서 한바이트씩 읽어서 out에 저장하는 코드인데요
26MB정도 되는 파일인데 74KB까지만 읽고 루프를 빠져나와버립니다,,
왜이럴까요?ㅠㅠ

chanik의 이미지

파일을 바이너리 모드로 오픈하시면 될 겁니다.

	in = fopen("LastNight.wav", "rb");
	out = fopen("res.wav", "wb");

Windows에서는 텍스트모드로 파일을 읽을 때 ASCII코드 26번(== 0x1A == Ctrl-Z)을 만나면
EOF로 인식하게 되는데 .wav 파일에서 그 문자를 만난 걸 겁니다.

익명 사용자의 이미지

감사합니다! 바로해결됐네요