私は初心者で、サイズが約 33MB (正確には 33136KB) の非常に大きなテキスト ファイルの内容を新しいファイルにコピーしようとしています。プログラムの実行中にセグメンテーション違反が発生します。新しいファイルにコピーされるのは 16KB だけです。コピーするファイルの名前は「test_file3」で、新しいファイルの名前は「newfile」です。仮想ボックスのCentOS-5でこれらすべてを行っています。詳細は次のとおりです。
[root@localhost decomp_trials]# cat read_file.c
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char *argv [] )
{
FILE *ifp, *ofp;
char *ptr;
ifp = fopen ( argv [ 1 ], "r" );
ofp = fopen ( argv [ 2 ], "a" );
for ( ptr = malloc ( 10 ); fread ( ptr, 1, 10, ifp ); )
fprintf ( ofp, ptr );
fclose ( ifp );
fclose ( ofp );
return 0;
}
[root@localhost decomp_trials]# cc read_file.c -o read_file
[root@localhost decomp_trials]# ./read_file /root/sys_cl_huk_ajh/imp/copy_hook7/test_file3 newfile
Segmentation fault
[root@localhost decomp_trials]# du -s newfile
16 newfile
[root@localhost decomp_trials]# pwd
/root/sys_cl_huk_ajh/pro_jnk/decomp_trials
[root@localhost decomp_trials]# du -s ../../imp/copy_hook7/test_file3
33136 ../../imp/copy_hook7/test_file3
[root@localhost decomp_trials]#
私が間違っている可能性があることを教えてください。より良い方法はありますか?私を助けてください