二进制文件读取字节比较问题?

时间:2008-06-20 13:46:26   来源:论坛整理  作者:  编辑:chinaitzhe
char ss7Temp[2]={0};
char *s;
ifstream inf;
inf.open("20080201100830.dat");

while(!inf.eof())
{
inf.read((char*)&ss7Temp,1); //二进制文件,文件第一字节为aa
if(ss7Temp[0] == 0xaa) //可以这样比较吗?假如第一个字节为aa,我比较的结果是不相等的
........
 else
strcpy(s,ss7Temp); //运行时报错
}

1.如何对二进制文件进行比较?
2.假如把每次读取的一个字节放到 char *s该如何做?

网友回复:1.memcmp(ss7Temp[0], 0xaa, sizeof(ss7Temp[0]))
试试吧
2.char *s 要分配内存
要么
char s[2];
要么
char *s = (char *)malloc(2*sizeof(char));
用完记得:
free(s);

网友回复:二进制比较不要用 char,用 unsigned char

if(ss7Temp[0] == 0xaa) //可以这样比较吗?假如第一个字节为aa,我比较的结果是不相等的
是因为你的ss7Temp是char的,char默认是有符号的
网友回复:memcpy(s,ss7Temp,sizeof(ss7Temp));//这个地方不能用strcpy,strcpy是针对字符串的。
网友回复:#define MAX 10
char s[MAX];
s要分配内存
网友回复:指针这样用是要先分配内存的,或者有一个指向的对象。
网友回复:
引用 1 楼 xkyx_cn 的回复:
1.memcmp(ss7Temp[0], 0xaa, sizeof(ss7Temp[0]))
试试吧
这个函数前两个参数是指针,这样能行?
[Quote=引用 3 楼 cwc270 的回复:]
memcpy(s,ss7Temp,sizeof(ss7Temp));//这个地方不能用strcpy,strcpy是针对字符串的。

可以用STRCPY,因为两个都是字符串
关键字:二进制,文件,读取,字节,比较,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面