求助:以rb+打开文件,读取到文件结尾,开始写文件,则写文件失败,不知道为什么

雪琦 雪琦 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
以下是源码

本意是想打开一个二进制文件,在其尾部加入一些特定信息如程序名称 版本号 校验值等
但是每次写文件都会返回失败,不知道为什么,获取的错误码是32

请各位帮忙分析分析,原因是什么,在此谢过了

//返回值 0:失败 1:成功
int fill_bin_file(char *filename,unsigned char file_data,long size)
{
FILE *fp;
long cur_size;
unsigned char val;
int j;

//============打开文件
fp = fopen(filename,"rb+");
if (fp == NULL)
{
printf("open file fail\n");
return 0;
}
//==========获取文件的当前长度
if (fseek(fp,0,SEEK_END)!=0)
{
printf("seek file fail\n");
fclose(fp);
return 0;
}
cur_size = ftell(fp);
//==========校验文件长度
if ((cur_size == -1)||(cur_size+32 >= size))
{
printf("get file size fail\n");
fclose(fp);
return 0;
}
printf("file current size is : %u\n",cur_size);
//=========计算从文件开始到当前位置的异或校验
crc_val = 0;
j=0;
if (fseek(fp,0,SEEK_SET)!=0)
{
printf("seek file fail\n");
fclose(fp);
return 0;
}
while(j<cur_size)
{
if (fread(&val,1,1,fp)!=1)
{
printf("read file error\n");
fclose(fp);
return 0;
}
crc_val ^= val;
j++;
}
//===========填充文件
while (cur_size < size-32)
{
if(fwrite(&file_data,1,1,fp)!=1)
{
printf("write file fail\n");
fclose(fp);
return 0;
}
cur_size++;
crc_val ^= file_data;
}
//==========填写后缀信息
//填写程序名
for (j=0;j<10;j++)
{
fwrite(&dev_type[j],1,1,fp);
cur_size++;
crc_val ^= dev_type[j];
}
//填写版本
for (j=0;j<10;j++)
{
fwrite(&version[j],1,1,fp);
cur_size++;
crc_val ^= version[j];
}
//填写保留
for (j=0;j<11;j++)
{
fwrite(&file_data,1,1,fp);
cur_size++;
crc_val ^= file_data;
}
//填写校验
fwrite(&crc_val,1,1,fp);
fclose(fp);
return 1;
}
...全文

相关推荐

c语言打开文件函数使用方法

如果文件存在,则从文件末尾开始写入;如果文件不存在,则会创建新文件。2. **二进制文件模式** - `"rb"`:以只读方式打开二进制文件。 - `"wb"`:以只写方式打开二进制文件。

weixin_38693753

C语言实现二进制文件读写详解

若文件不存在则建立该文件。* `w+`:打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。* `a`:以附加的方式打开只写文件。

weixin_38655347

C语言文件读写代码+文档解析

文件打开模式包括但不限于:- `"r"`:以只读方式打开文本文件,文件必须存在。- `"w"`:以只写方式打开文本文件,如果文件已存在则将其长度设置为0,如果文件不存在则尝试创建该文件。

梦回阑珊

PHP文件打开关闭及读写操作示例解析

- r+:读写模式。文件指针位于文件开头。- w+:读写模式。文件指针位于文件开头,如果文件存在则内容会被清空。- x+:谨慎读写模式。如果文件已存在,则打开失败。- a+:追加读写模式。

weixin_38722052

Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例

本文主要介绍了Python中的文件操作,包括读取文件、文件指针和写入文件的相关概念和示例代码。通过实例演示了如何使用`open()`函数以不同的模式打开文件,以及如何使用`read()`和`writ

weixin_38695452
评论 9
收藏 已收藏
分享
返回顶部
雪琦
C语言 70,040 成员 243,237 内容