问一个关于修改文档内容的有关问题

问一个关于修改文档内容的问题
例如我想将 "ABC.DAT "(用16进制存储)里面的 "A1   C3   03   95   DD   2A "(用UE32查看)修改成 "A1   C3   AA   DD   9A   2A ".

问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?

问题二:
怎么查找任意长度的16进制数据?

谢谢各位高手指点一二...

------解决方案--------------------
问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?
--------------------------
一个字符一个字符的读,用16进制显示不就是了?
------解决方案--------------------
问题二:
怎么查找任意长度的16进制数据?
-------------------------------------
先将16进制数转换成字符串,然后模式匹配就行了
------解决方案--------------------
.....
用不上数组~
你可以读一个就马上显示到屏幕~
不缓冲~~

这样无论多大文件都能解决了~

。。。。
------解决方案--------------------
任意长的字符串匹配
看看那些游戏公司处理字符串的过程
搜索引擎也有 搜搜看
了解一些原理会有帮助
------解决方案--------------------
问题一:
我应该怎么像UE那样将ABC.DAT读取成16进制类UE32的显示放在数组?
================
1 字符方式, 这个比较麻烦
2 数值方式:fscanf(fp, "%x ", x); //x读取A1这样的 数值, 空格分割数据

然后回写文件时候,
也使用 %x方式就可以是 16进制数据了
------解决方案--------------------
注释一下:
#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;
}