int fread(char cc[],int a[],int q)
{
ifstream infile;
infile.open("C:\\Dev-Cpp\\DCS\\Decom\\a.txt",ios::binary);
infile.read(cc,257);
infile.close();
for(int i=0;i<256;i++){a[i]=(unsigned char)cc[i];}
return 0;
}
今すぐqはスレッドカウンタから値を取得し、ここでは、私が何をしたいのか読書
あり、それは最初の256個の文字を読み取り、 場合qは1で、位置は256から512などの文字を読み込みます。
これは正しい方法ですか、ccですか、それとも256の配列ですか、それとももっと効率的なやり方ですか?
int fread(char cc[],int a[],int q)
{
int ka=0,kb=0;
kb=q*256;
ka=ka+256;
ifstream infile;
infile.open("C:\\Dev-Cpp\\DCS\\Decom\\a.txt",ios::binary);
infile.seekg(256);
infile.read(cc,ka);
infile.close();
for(int i=0;i<256;i++){a[i]=(unsigned char)cc[i];}
return 0;
}
私はs949.exeに0xb9fb2475で未処理の例外を取得しています:0xc0000005では:アクセス違反が場所0xb9fb2475を読んで、私はVCでそれをデバッグするとき++ 2010
なぜ257文字が読み込まれますが、 'for'ループで256文字だけが処理されるのですか? (ファーストリード機能参照)。 –
私はあなたがそれをやっているどこかで読む、257読み込み256文字 –
私はいつも256バイトを読むために256を使用しています。ファイルに256文字が含まれている場合、プログラムはファイルの終わりを過ぎて読み取ったり、次のデータブロックに読み込んだりすると予期せぬ動作になりません。 –