ファイルを読み取って、元のファイルと同じ内容であるが 4 バイトごとに削除された別のファイルを生成する必要がある問題を解決しようとしています。
int main()
{
FILE *p;
FILE *q;
int i=0,k=0;
char c;
p = fopen("C:\\Users\\Teja\\Desktop\\Beethoven.raw","rw");
q = fopen("C:\\Users\\Teja\\Desktop\\Beethoven_new.raw","w+");
printf("%x is the EOF character \n",EOF);
while((c=fgetc(p))!=EOF)
{
if(i==3){
i=0;
printf("Removing %x %d \n",c,k++);
}
else{
printf("Putting %x %d \n",c,k++);
fputc(c,q);
i++;
}
}
fclose(p);
fclose(q);
return 0;
}
読み取ろうとしていたファイルは .raw ファイルで、約 10 ~ 15 MB です。上記のコードは、通常 88 バイト後にファイルの読み取りを停止することに気付きました。大きなファイルを読み取る方法はありますか、それとも何か間違っていますか?