ファイルがあるとしましょう。すべてのバイトを unsigned char バッファに読み込みました。そこから、長さを知らずに ac 文字列 (null で終了) を読み取ろうとしています。
私は次のことを試しました:
char* Stream::ReadCString()
{
char str[0x10000];
int len = 0;
char* pos = (char*)(this->buffer[this->position]);
while(*pos != 0)
str[len++] = *pos++;
this->position += len+ 1;
return str;
}
文字がnullで終了しているかどうかを確認しながら、str配列の各文字を埋めることができると思いました。これは機能していません。何か助けはありますか?
this->buffer = バイト配列
this->position = 配列内の位置
これを行う他の方法はありますか?実際のバッファのアドレスで実行できると思います:
str[len++] = *(char*)(this->buffer[this->position++])
?
更新: 私の新しい機能:
char* Stream::ReadCString()
{
this->AdvPosition(strlen((char*)&(this->buffer[this->position])) + 1);
return (char*)&(this->buffer[this->position]);
}
そしてそれを呼び出す:
printf( "String: %s\n", s.ReadCString()); //tried casting to char* as well just outputs blank string
サンプルファイル: