我正在用C语言完成编码任务,直到读完符号并根据表格分配相应的代码为止,我一直做得很好。我必须串联多个代码,直到它们达到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");
}
}
答案 0 :(得分:0)
fputc用于将一个ASCII字符写入文件。
int fputc(int, FILE*)
//此int在进入文件之前被转换为无符号(您的位可能在这里被弄乱了)
1-解决方案:以二进制模式打开该文件,然后使用fwrite进行写入
fp = fopen("filename", "wb+");
fwrite(buffer, 4, 1, fp);
*由于大多数计算机上的整数都有32位(4字节),因此应该将整个32位一次写入二进制文件
2-解决方案:假设您无法在此函数内以二进制模式打开文件...您可以简单地使用usgin fprintf编写4个字符。
int fprintf(FILE*, format, ....);
*注意:很难提供更多帮助,因为尚不清楚这些符号的本质是什么。 例如:二进制流,整数,ASCII,UTF等