c - c中的分配存储和二进制fwrite短裤

标签 c malloc sizeof fwrite calloc

我正在尝试分配单个短裤 block ,将其写入文件, 然后再读回来。但是写入的数据 文件与输出的内容不匹配。我已经隔离了问题 到以下代码。知道我做错了什么吗?

#define CHUNK_SIZE 1000
void xwriteStructuresToFile(FILE *file, void * structureData)
{
    assert((fwrite(structureData, sizeof(short), CHUNK_SIZE, file)) == CHUNK_SIZE);

}

void wwbuildPtxFiles(void)
{   
    FILE *file = fopen("s:\\tv\\run32\\junky.bin", WRITE_BINARY);
    int count = 10;
    short *ptx = (short *) calloc(CHUNK_SIZE * count, sizeof(short ) );

    memset(ptx, '3', sizeof(short) * CHUNK_SIZE * count);
    for (int dayIndex = 0; dayIndex < count; ++dayIndex)
        xwriteStructuresToFile(file, (void *) &ptx[ CHUNK_SIZE * sizeof(short) * dayIndex ]);

    free(ptx);
    fclose(file);

    file = fopen("s:\\tv\\run32\\junky.bin", READ_BINARY);
    int xcount = CHUNK_SIZE * count * sizeof(short );
    for (int i = 0; i < xcount; ++i)
    {
        char x;
        if ((x = getc(file)) != '3')
            assert(false);
    }
}

最佳答案

从数组索引中删除 sizeof(short)。 C会为你做这个计算

关于c - c中的分配存储和二进制fwrite短裤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9272175/

相关文章:

c - C 中的幂函数为大数提供相同的输出

c - 打印#define 常量

C++大内存分配

c - 如何让 gcc 警告未定义的结构?

python - 如何通过 Python Azure SDK 了解 Azure blob 对象的大小

c - 在linux中的同一个套接字上接收来自不同组的多播数据

c - 从 C 中的变量中减去 '0' 是什么意思?

c - 在计算字符数后输入文本和 malloc 可能吗? ( C )

c - 没有节点结构的二叉搜索树递归

c - 强制 C 中的特定结构大小