编码,在文件中写入一个整数
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 等
我在做一个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 等