(筆記) 如何寫入binary file某個byte連續n byte的值? (C/C++) (C)

Abstract
通常公司為了保護其智慧財產權,會自己定義檔案格式,其header區會定義每個byte各代表某項資訊,所以常常需要直接對binary檔的某byte直接進行寫入,且連續寫入幾個byte表示某一數值資訊。

Introduction
使用環境:Windows XP SP3 + Visual C++ 6.0 SP6

將寫入wf.bin的0x33 byte處的連續4 byte值。

复制代码
 1 /* 
2 (C) OOMusou 2011 http://oomusou.cnblogs.com
3
4 Filename : WriteNByte.c
5 Compiler : Visual C++ 6.0
6 Description : how to write n byte value with n-byte position?
7 Release : oct.31,2011 1.0
8 */
9
10 #include <stdio.h>
11
12 int main() {
13 FILE *fp;
14 int filesize;
15 unsigned char buff[4];
16
17 fp = fopen("./wf.bin", "rb+");
18 if (!fp) {
19 fclose(fp);
20 return -1;
21 }
22
23 buff[0] = 0xAC;
24 buff[1] = 0xFF;
25 buff[2] = 0x1B;
26 buff[3] = 0xAA;
27
28 fseek(fp, 0x33, SEEK_SET);
29 fwrite(buff, sizeof(unsigned char), 4, fp);
30
31 fclose(fp);
32
33 return 0;
34 }
复制代码

15行

unsigned char buff[4];

宣告4 byte char array。

17行

fp = fopen("./wf.bin", "rb+");

由於要修改目前開啟的binary f ile,所以使用rb+,詳細請參考(筆記) 如何寫入binary file某個byte的值? (C/C++) (C)

23行

buff[0] = 0xAC;
buff[1] = 0xFF;
buff[2] = 0x1B;
buff[3] = 0xAA;

分別設定每個byte的值。

28行

fseek(fp, 0x33, SEEK_SET);

使用fseek將binary file的檔案位置移到0x33處,其中SEEK_SET表示offset是從檔頭開始。

29行

fwrite(buff, sizeof(unsigned char), 4, fp);

正式使用fwrite將buff寫入檔案,由於單位是unsigned char,所以size為4。

See Also
(筆記) 如何寫入binary file某個byte的值? (C/C++) (C)

posted on   真 OO无双  阅读(6457)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2009-10-31 (原創) 如何處理signed integer的加法運算與overflow? (SOC) (Verilog)
2007-10-31 (原創) 如何讓P7010外接螢幕支援1440x900(WXGA+)? (NB) (P7010)

导航

统计

点击右上角即可分享
微信分享提示