我是c ++的新手,我有一些noob问题:
我试图做一个读取ISO文件的程序并返回一些信息,如大小,块大小,块......
我的第一个问题是关于fread,以及如何将readed信息存储到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和其他我可以得到一个文件列表,但我想做一个独立的程序。
提前致谢;)
答案 0 :(得分: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 */
}