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 回答