用C语言读取文件指定的数据,并将数据惠存bin文件中
用C语言读取文件指定的数据,并将数据存入bin文件中
有两个文件,文件1,和文件2.它们的内容如图片所示:
文件1:

文件2:

我需要将文件2中的定义的等式,例如:equ_0001 = letter00+letter00+200+letter00+letter00+FFFFH
对应文件1中的定义例如:letter00 equ 0x0000
将这些数据存入bin文件中,存放的格式为letter00存放用2个byte 200也存放用2个byte,FFFF也存2个byte
那么:equ_0001 = letter00+letter00+200+letter00+letter00+FFFFH
存放的数据为:00 00 00 00 00 C8 00 00 00 00 ff ff
求懂的朋友指教下,希望详细点. 求告诉详细的方法,包括用到的函数。最好能给我写个示范的代码。不胜感激!!
------解决方案--------------------
letter02+letter01要这样存放: 02 00 01 00
这叫先存放低字节。
有两个文件,文件1,和文件2.它们的内容如图片所示:
文件1:
文件2:
我需要将文件2中的定义的等式,例如:equ_0001 = letter00+letter00+200+letter00+letter00+FFFFH
对应文件1中的定义例如:letter00 equ 0x0000
将这些数据存入bin文件中,存放的格式为letter00存放用2个byte 200也存放用2个byte,FFFF也存2个byte
那么:equ_0001 = letter00+letter00+200+letter00+letter00+FFFFH
存放的数据为:00 00 00 00 00 C8 00 00 00 00 ff ff
求懂的朋友指教下,希望详细点. 求告诉详细的方法,包括用到的函数。最好能给我写个示范的代码。不胜感激!!
c语言
文件
数据
------解决方案--------------------
letter02+letter01要这样存放: 02 00 01 00
这叫先存放低字节。
#include <stdio.h>
#include <string.h>
#define MAXDATA 6
#define MAXLEN 1024
FILE *fi,*fo,*fa;
char ln[MAXLEN],*p;
int n,r,i,h;
unsigned short b[MAXDATA];
int addr;
int main() {
fi=fopen("2.txt","r");
fo=fopen("3.bin","wb");
fa=fopen("addr.bin","wb");
addr=0;
h=0;
while (1) {
if (NULL==fgets(ln,MAXLEN,fi)) break;
h++;
i=0;
p=strstr(ln,"= ");
if (NULL==p) {
printf("Format Error at Line %d:%s",h,ln);
continue;
}
p+=2;
while (1) {
r=sscanf(p,"letter%hd+%n",&b[i],&n);
if (1==r) {
p+=n;
i++;
if (i>=MAXDATA) break;
} else if (r==EOF) break;
else {
r=sscanf(p,"%hd+%n",&b[i],&n);
if (1==r) {
p+=n;
i++;
if (i>=MAXDATA) break;
} else if (r==EOF) break;
else {
r=sscanf(p,"%hXH",&b[i],&n);
if (1==r) {
p+=n;
i++;
if (i>=MAXDATA) break;
} else if (r==EOF
------解决方案--------------------
r==0) break;
}
}
}
n=i;
if (1) {//先低字节,将(1)改为(0)即可改用下面的“先高字节”
fwrite(&addr,1,3,fa);
fwrite(b,sizeof(unsigned short),n,fo);
} else {//先高字节
fputc(((char *)&addr)[2],fa);
fputc(((char *)&addr)[1],fa);
fputc(((char *)&addr)[0],fa);