C fread将值0写入分配的内存,返回大值

C fread将值0写入分配的内存,返回大值,c,file-io,C,File Io,我已经为此工作了几个小时,让其他人看了看,但我不明白。要点是我需要读取字节对,使用一个操作组合它们,然后将组合写入一个新文件两次。唯一的问题是,这里的fread函数将值0写入分配给左侧和右侧的内存中 代码中的一个早期示例,freadheaderbuffer,11*sizeofint,1,inputFile;效果很好,只会导致更多的混乱 您确定正在读取的字节以前是使用等效的fwrite功能写入的吗?源数据的hexdump将大大有助于理解这是否属实。是的,输入文件会有所帮助。还有一些读数后的打印输出

我已经为此工作了几个小时,让其他人看了看,但我不明白。要点是我需要读取字节对,使用一个操作组合它们,然后将组合写入一个新文件两次。唯一的问题是,这里的fread函数将值0写入分配给左侧和右侧的内存中


代码中的一个早期示例,freadheaderbuffer,11*sizeofint,1,inputFile;效果很好,只会导致更多的混乱

您确定正在读取的字节以前是使用等效的fwrite功能写入的吗?源数据的hexdump将大大有助于理解这是否属实。是的,输入文件会有所帮助。还有一些读数后的打印输出。什么是inputf和outputf?他们没有分机吗?此外,您还应该在打开文件时检查一些错误,方法是在其中设置一个条件,如->ifinputFile=NULL…我怀疑fread失败-man fread-如果发生错误,或到达文件末尾,返回值为短项计数或零。@DavidC.Rankin:他似乎在检查下面3行中的错误。如果其中一个调用错误,则返回值将不是1。
short * left = malloc(sizeof(short));
short * right = malloc(sizeof(short));
short * combined = malloc(sizeof(short));
FILE * inputFile = fopen(inputf, "r");;
FILE * outputFile = fopen(outputf, "w");;

while(1){
    int resultLeft = fread(left, sizeof(short), 1, inputFile);
    int resultRight = fread(right, sizeof(short), 1, inputFile);

    //if we reached the end of the file, close files and break the loop.
    if (resultLeft != 1 || resultRight != 1){
        fclose(inputFile);
        fclose(outputFile);
        break;
    }

    //*combined = operation;

    fwrite(combined, sizeof(short), 1, outputFile);
    fwrite(combined, sizeof(short), 1, outputFile);
}