iOS(sim)文件二进制读取最后给出了乱码

时间:2012-08-01 00:36:15

标签: ios file memory binary

我使用这个例程来执行从文件到内存的二进制读取,到目前为止工作正常...至少在iOS上,在模拟器中...(没有付费的开发人员程序(还有)) )

数字,例如fileSize,bytesRead没问题,但最后却给了胡言乱语......

我不能覆盖内存,因为我马上做了输出......

然后我认为它可能是对齐边界问题,例如fileSize%4 = det。胡言乱语。 但那会是奇怪的行为,函数得到一个大小和一个计数,lib应该在后台计算多字节读取,这样就不会导致问题......

这是我使用的代码:

uint8_t *readFileToMemory(FILE *fp)
{
    fseek(fp, 0, SEEK_END);
    long fileSize = ftell(fp);
    rewind(fp);
    //
    printf("fileSize %lu bytes\n",fileSize);
    //
    uint8_t *fileData = NULL;
    //
    fileData = (uint8_t *)requestMemory(fileData, (MEM_TYPE_MEMSIZE)fileSize, BF_MEM_ZERO_NO, "readFileToMemory()");
    fread(fileData, 1, (size_t)fileSize, fp);
    //
    long sizeRead = fread(fileData, 1, (size_t)fileSize, fp);
    printf("sizeRead %lu bytes\n",sizeRead);
    //
    fclose(fp);
    //
    printf("+\n+\nfileData:\n%s+\n+\n",fileData);
    //
    return fileData;
}

我发布这个问题的原因是“为什么是胡言乱语?”在iOS-sim上,我确实有一个简单的解决方法btw ...

尼尔斯

1 个答案:

答案 0 :(得分:0)

我现在在这里,所以我不妨提供关闭的答案;)

我忘了在二进制文件的末尾添加'\ 0',然后将其作为(c / glsl以NULL结尾)字符串传递...哎呀:)

我感谢borrrden对Apple libs二元阅读的评论,我仍然需要研究......(时间时间)

尼尔斯