社区
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进制数据?
谢谢各位高手指点一二...
...全文
277
9
打赏
收藏
问一个关于修改文档内容的问题
例如我想将"ABC.DAT"(用16进制存储)里面的"A1 C3 03 95 DD 2A"(用UE32查看)修改成"A1 C3 AA DD 9A 2A". 问题一: 我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组? 问题二: 怎么查找任意长度的16进制数据? 谢谢各位高手指点一二...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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进制显示不就是了?
java
修改
文件
内容
_用Java
修改
现有文件
内容
小编典典如对类似
问
题
的公认答案中所建议:同时以写入模式打开
一个
临时文件,对于每一行,读取它,必要时进行
修改
,然后写入该临时文件。最后,删除原始文件并重命名临时文件。根据您的实现,类似于以下
内容
:import...
【Java代码】:实现文本
内容
修改
通过JAVA实现多个文本文件多个
内容
的替换...
批量
修改
替换多个Word
文档
中同一
内容
的方法
群里(Word学习交流群:180627193)一位朋友
问
到,如何一次性批量替换多个word
文档
中的同一
内容
。其实,实现多个Word
文档
的字符进行批量替换的方法有多种。(www.itblw.com) 第一种方法,可以利用第三方软件:...
怎么样批量
修改
html里的
内容
,批量
修改
替换多个Word
文档
中同一
内容
的方法
批量
修改
替换多个Word
文档
中同一
内容
的方法群里一位朋友
问
到,如何一次性批量替换多个word
文档
中的同一
内容
。其实,实现多个Word
文档
的字符进行批量替换的方法有多种。第一种方法,可以利用第三方软件:全能字符串...
在计算机中搜索excel文件,excle
文档
搜索目录《如何在多个EXCEL文件中搜索某一
内容
?》...
我有100个excel文件,在
一个
目录下,如何在另外的excel文件中查找数据 举思路:先把另外99个workbook合并到
一个
book中,然后用vlookup查找即可。用excel在文件夹中查找符合条件的文件,并提取文件路径建立超级链接。...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章