char* full_string;
int size;
FILE* f = fopen(filename,"r");
fseek(f,0,SEEK_END);
size = ftell(f);
fseek(f,0,SEEK_SET);
full_string = malloc(size+1);
fread(full_string,1,size,f);
fclose(f);
full_string[size] = '\0';
私は上記のコードで "full_string"という名前のバッファにファイルの内容を読み込もうとしていますが、gdbをステップ実行すると、次のものが格納されています代わりに「full_string」:イメージファイルの内容をバッファに読み込む
full_string = 0xa46df0 "\377\330\377", <incomplete sequence \340>
を私はCで、完全な初心者ですので、私はこの問題をどのように解釈するか見当がつかない。私が読んでいるファイルはイメージファイルであることに言及する価値があります。これらの画像の大部分は50,000バイト以上のサイズです。どんな助けでも大歓迎です!
'full_string'で何を期待していますか?デバッガは文字列として解釈しようとしていますが、イメージは文字列ではありません。したがって、あなたの*コード*はうまくいくかもしれませんが、*デバッガー*は混乱するかもしれません。 –
@ScottHunterまたはそのような巨大な文字列を表示することができない – fvu
"文字列"は0で終わり、 'char *'(または 'char *'に崩壊する 'char []'物事に渡されたとき)。その非常に特殊な形式以外のものを置くと、文字列を作成していないので、一連のバイトを作成しています。 GDBはあなたが文字列を作っていないことを知りません。どうした?だから、それは文字列であると仮定し、文字列ではないので文字列として解釈するときにはエラーになります。 –