【问题标题】:store fread() in char instead memory buffer将 fread() 存储在 char 而不是内存缓冲区中
【发布时间】:2013-05-03 20:24:53
【问题描述】:

我是 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 和其他程序我可以获得文件列表,但我想做一个独立程序。

提前致谢 ;)

【问题讨论】:

    标签: visual-c++


    【解决方案1】:

    请记住,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 */
    }
    

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 2016-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 2013-09-19
      相关资源
      最近更新 更多