社区
C语言
帖子详情
问一个关于修改文档内容的问题
natineprince
2007-03-18 06:27:14
例如我想将"ABC.DAT"(用16进制存储)里面的"A1 C3 03 95 DD 2A"(用UE32查看)修改成"A1 C3 AA DD 9A 2A".
问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?
问题二:
怎么查找任意长度的16进制数据?
谢谢各位高手指点一二...
...全文
284
9
打赏
收藏
问一个关于修改文档内容的问题
例如我想将"ABC.DAT"(用16进制存储)里面的"A1 C3 03 95 DD 2A"(用UE32查看)修改成"A1 C3 AA DD 9A 2A". 问题一: 我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组? 问题二: 怎么查找任意长度的16进制数据? 谢谢各位高手指点一二...
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2007-03-19
打赏
举报
回复
注释一下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp=fopen("test.txt", "r+");
int x[6]={0}, //这个是辅助数组,用于读取文件中的数值
y[]={0xA1, 0xC3, 0x03, 0x95, 0xDD, 0x2A}, //需要修改的一系列值
z[]={0xA1, 0xC3, 0xAA, 0xDD, 0x9A, 0x2A}; //修改为这个数组中的值
int i=0, start;
fscanf(fp, "%x", &x[i]);
while(!feof(fp)) //读取并循环,判断是否找到需要修改的系列数据
{
if(x[i] == y[i]){if(i==0)start=ftell(fp);i++;} //start保存修改位置
else i=0;
if(i==6)break; //找到了, break退出
fscanf(fp, "%x", &x[i]);
}
fseek(fp, start-2, SEEK_SET); //移动指针,开始写入信息
fprintf(fp, "%x", z[0]);
for(i=1; i<6; i++)fprintf(fp, " %x", z[i]); //格式控制可以调整 ~
system("PAUSE");
return 0;
}
jixingzhong
2007-03-19
打赏
举报
回复
/*
test.txt 初始内容:
A1 C1 03 95 DD 1A
A1 C2 03 95 DD 2A
A1 C3 03 95 DD 2A //这行是需要修改的
A1 C4 03 95 DD 3A
运行后内容:
A1 C1 03 95 DD 1A
A1 C2 03 95 DD 2A
a1 c3 aa dd 9a 2a //OK
A1 C4 03 95 DD 3A
*/
参考程序:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp=fopen("test.txt", "r+");
int x[6]={0},
y[]={0xA1, 0xC3, 0x03, 0x95, 0xDD, 0x2A},
z[]={0xA1, 0xC3, 0xAA, 0xDD, 0x9A, 0x2A};
int i=0, start;
fscanf(fp, "%x", &x[i]);
while(!feof(fp))
{
if(x[i] == y[i]){if(i==0)start=ftell(fp);i++;}
else i=0;
if(i==6)break;
fscanf(fp, "%x", &x[i]);
}
fseek(fp, start-2, SEEK_SET);
fprintf(fp, "%x", z[0]);
for(i=1; i<6; i++)fprintf(fp, " %x", z[i]);
system("PAUSE");
return 0;
}
jixingzhong
2007-03-19
打赏
举报
回复
问题二:
怎么查找任意长度的16进制数据?
=================
任意长,
那就只有使用字符串 ~
在你的情况下,
没有所谓的任意长,
它们都是 空格分隔 了嘛 ~
所以你可以这样做,
用一连续的数值比较来判断,
恩, 给个例子程序吧,
先等等 ~~
jixingzhong
2007-03-19
打赏
举报
回复
问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?
================
1 字符方式, 这个比较麻烦
2 数值方式:fscanf(fp, "%x", x); //x读取A1这样的 数值, 空格分割数据
然后回写文件时候,
也使用 %x方式就可以是 16进制数据了
goodluckyxl
2007-03-19
打赏
举报
回复
任意长的字符串匹配
看看那些游戏公司处理字符串的过程
搜索引擎也有 搜搜看
了解一些原理会有帮助
bo.cui
2007-03-19
打赏
举报
回复
.....
用不上数组~
你可以读一个就马上显示到屏幕~
不缓冲~~
这样无论多大文件都能解决了~
。。。。
natineprince
2007-03-18
打赏
举报
回复
如果ABC.DAT的容量达到2M级...那么要多大的数组才能模式匹配啊?
mochen5460
2007-03-18
打赏
举报
回复
问题二:
怎么查找任意长度的16进制数据?
-------------------------------------
先将16进制数转换成字符串,然后模式匹配就行了
mochen5460
2007-03-18
打赏
举报
回复
问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?
--------------------------------------------------------------
一个字符一个字符的读,用16进制显示不就是了?
croc-v10.2.4-Linux-64bit.tar.gz
croc_v10.2.4_Linux-64bit.tar.gz
Java源码-springboot前后分离框架04网页时装购物系统+MySQL毕设大作业源码.zip
本项目是基于Spring Boot前后分离框架开发的网页时装购物系统,该系统结合了MySQL数据库进行数据存储和处理。该项目旨在实现
一个
完整的电子商务购物流程,包括商品展示、用户注册登录、购物车管理、订单生成等功能。其中,前后端分离的设计模式使得系统更加灵活,提高了系统的可扩展性和可维护性。 项目主要采用了Spring Boot框架进行开发,利用Spring Boot的快速开发和部署特性,大大缩短了开发周期。同时,系统采用了MySQL数据库进行数据存储,保证了数据的安全性和稳定性。在前端方面,项目采用了流行的前端技术,如HTML、CSS、JavaScript等,为用户提供了良好的购物体验。 此外,该项目是
一个
毕设大作业源码,旨在帮助学生完成毕业设计的同时,提供实际项目开发经验。源码中包含了项目的完整开发过程和关键代码实现,对于学习Spring Boot框架和电子商务系统开发的同学具有很好的参考价值。毕设项目源码常年开发定制更新,希望对需要的同学有帮助。
peft-0.10.0.tar.gz
该资源为peft-0.10.0.tar.gz,欢迎下载使用哦!
C2000 ePWM使用示例
C2000 ePWM使用示例
marketplaceagreement-jvm-1.3.8.jar
marketplaceagreement-jvm-1.3.8.jar
C语言
70,025
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章