0
char * extract(FILE * handle, int from, int len=0)
{
long fsize = filesize(handle);
fseek(handle, from, SEEK_SET);
len = (len > 0) ? fsize : fsize;
char * new_data = new char[len];
for(int i = 0; i < len; i++)
new_data[i] = getc(handle);
return new_data;
}
int main()
{
FILE * file1 = fopen("output.txt", "rb");
char * buffer = extract(file1, 0);
}
PHPでsubstr()と似た関数を作っていましたが、バイナリファイルではなくテキストのみで動作します。それはうまくいくようですが、正しいアプローチを使用したかどうかを知りたいと思っています。代わりにfor {}
ループのPHPでsubstr()のように機能するC++関数
あなたがここでやるべきではない、物事の多くが、ほとんどの明白な問題は、あなたが時間(パフォーマンスキラー)で1文字を読むことをしている、あなたは 'lenの場合overreadしてみてください== 0と 'from!= 0'そして最後にこれはC++ではなくCのコードです。 – Jon
この声明は何をしていますか? "len =(len> 0)?fsize:fsize;" lenがゼロでないかどうかにかかわらず、lenをfsizeに設定します。バグ?大きなファイルでの問題を避けるには、 – selbie
は "long from"にする必要があります。 –