编码,在文件中写入一个整数

Codification, write an integer in a file

我在做一个C语言的coding任务,一直顺利到读符号的部分,按照一个table分配了相应的代码。我必须连接几个代码,直到它们的长度达到 32 位,为此我必须将它们写在一个文件中。 这种写入文件的方法给我带来了很多问题,我正在尝试使用 fputc() 函数来完成。

我不能更改函数的声明,因为他们要求它用于作业。 我创建了一个掩码以能够按字节写入整数,因为他们还建议课程的老师。 使用该代码的程序可以工作,但是当我使用二进制查看器查看文件时,它只打印零。 知道我做错了什么吗? 谢谢!

void write_int(FILE* fp, unsigned int buffer, int nbytes){
    if ( (nbytes <= sizeof(int)) && (nbytes>=0) ){ 
        unsigned int aux;
        int i;
        for (i=4; i>(4-nbytes) ; i--){
            aux = buffer & new_mask( ((i*8)-1),((i-1)*8)); 
            fputc(aux,fp)
        }
    fputc('\n',fp);
    }else{
        printf("nbytes out of range");
    }    
}

fputc 用于将一个 ASCII-character 写入文件。

int fputc(int, FILE*) //这个int在转到文件之前被转换为unsigned(你的位可能在这里被弄乱了)

1-解决方法:以二进制方式打开此文件,使用fwrite

写入
fp = fopen("filename", "wb+");
fwrite(buffer, 4, 1, fp);

*因为大多数计算机上的整数有 32 位(4 字节)这应该将整个 32 位一次写入二进制文件

2- 解决方案:假设你不能在这个函数中以二进制模式打开文件...你可以简单地写 4chars usgin fprintf.

int fprintf(FILE*, format, ....);

*注意:除此之外很难提供更多帮助,因为不清楚这些符号的本质是什么。 例如:二进制流、整数、ascii、utf 等