gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:17:45 28 4
gpt4 key购买 nike

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

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

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 字符写入文件。

int fputc(int, FILE*)//这个 int 在进入文件之前被转换为无符号(你的位可能在这里被搞乱了)

1-解决方案:以二进制方式打开此文件并使用fwrite写入

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

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

2-解决方案:假设您无法在该函数内以二进制模式打开文件...您可以简单地使用gin fprintf写入4个字符。

int fprintf(FILE*, 格式, ....);

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

关于编码,将一个整数写入文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192596/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com