0

私はC ++が初めてで、いくつかの初心者の質問があります:

ISOファイルを読み取り、サイズ、ブロックサイズ、ブロックなどの情報を返すプログラムを実行しようとしています...

私の最初の質問は、fread と、読み取った情報をバッファーではなく char 変数に格納する方法です。文字列を返すときにバッファーに格納すると、プログラムは 4 つの「ý」文字のテキストを表示するためです。

たとえば、次を使用する場合:

char *systemID = (char*) malloc(sizeof(char)*32);
fread(systemID, 1, 8, infile);

その後、最後に 4 'ý' で動作しますが、使用する場合:

systemID = (char*) malloc(sizeof(char)*32);
fread(systemID, 1, 8, infile);

次に、プログラムがクラッシュします...
そのfread情報をchar変数に保存するにはどうすればよいですか?または最後の「ý」文字を回避するにはどうすればよいですか?

私が持っている別の質問: 誰かが ISO イメージに関する情報と、C++ で ISO 内のファイルのリストを取得する方法を持っています。7Zipなどを使用するとファイルのリストを取得できますが、スタンドアロンプ​​ログラムを実行したいため、別のプログラムを実行せずに実行したいです。

前もって感謝します ;)

4

1 に答える 1

0

C (および C++) の文字列は終了する必要があることに注意してください。関数は読み取られたアイテムの数を返します。これfreadをインデックスとして使用して、文字列を終了できます。

char *systemID = malloc(32);
size_t nread = fread(systemID, 1, 8, infile);
if (nread > 0)
    systemID[nread] = '\0';  /* Terminate string */
else
{
    /* Handle end-of-file or error */
}
于 2013-05-03T12:24:53.093 に答える