多谢提醒,疏忽了。
编译、运行结果与前面完全相同
抱歉啊,你代码就是for循环那里格式能整齐一下吗,代码有点混乱,我都看不明白{:10_266:} 本帖最后由 jackz007 于 2020-1-10 13:05 编辑
A小小鸟 发表于 2020-1-10 12:53
抱歉啊,你代码就是for循环那里格式能整齐一下吗,代码有点混乱,我都看不明白
这样可以了吗?
#include <stdio.h>
main(void)
{
unsigned char data[] = {
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x07,0x09,\
0x00,0x20,0x10,0x03,0x03,0x0C,0x00,0x00,0x44,0x00,\
0x00,0x33,0x00,0x47,0x0C,0x0E,0x00,0x0D,0x00,0x11,\
0x00,0x00,0x00,0x02,0x64,0x00,0x00,0x00,0xAA,0x00,\
0x00,0x00,0x64,0x10,0x00,0x00,0x00,0x00,0x00,0x00,\
0x00,0x00,0x02,0x00,0x74,0x0F,0x41,0x00,0x00,0x00,\
0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x0A,0x00,\
0x00,0x02,0x74,0x0F,0x41,0x00,0x06,0x08,0x00,0x00,\
0x00,0x00,0x00,0x64,0x00,0x0F,0x00,0x00,0x0D,0x00,\
0x00,0x00,0x23,0x00,0x00,0x64,0x00,0x00,0x64,0x00 } ;
unsigned char * p1 ;
unsigned short * p2 ;
unsigned int * p4 ;
unsigned long long * p8 ;
int d , k ;
for(k = 0 , p1 = & data ; k < 100 ; k ++ , p1 ++) if(* p1 == 100) {
printf(" Byte : [%d] = 100\n" , k) ;
}
for(d = 0 ; d < 2 ; d ++) {
for(k = d , p2 = (unsigned short *) & data ; k + 1 < 100 ; k += 2 , p2 ++) {
if(* p2 == 100) printf(" Word : [%d] = 100\n" , k) ;
}
}
for(d = 0 ; d < 4 ; d ++) {
for(k = d , p4 = (unsigned int *) & data ; k + 3 < 100 ; k += 4 , p4 ++) {
if(* p4 == 100) printf("DWord : [%d] = 100\n" , k) ;
}
}
for(d = 0 ; d < 8 ; d ++) {
for(k = d , p8 = (unsigned long long *) & data ; k + 7 < 100 ; k += 8 , p8 ++) {
if(* p8 == 100) printf("QWord : [%d] = 100\n" , k) ;
}
}
}
怎么突然有股屈辱感,竟然有在伺候甲方大爷的感觉呢!!! 本帖最后由 A小小鸟 于 2020-1-10 14:57 编辑
jackz007 发表于 2020-1-10 13:00
这样可以了吗?
怎么突然有股屈辱感,竟然有在伺候甲方大爷的感觉呢!!!
谢谢大哥辛苦的写代码,但是我要遗憾的说,大哥可能做错了,首先题目可能大哥就没看明白,要求的搜索方式大哥可能也没明白,所以代码直接是错的,但是还是谢谢大哥了
题目寿命了搜索100是int型,已经告诉了,然后要求是输出可能的结果以及地址,不是输出多少个,然后搜索,是一个字节一个字节搜索,但是比较是四个字节比较的,比如这个数组,开始查找是0x00开始,然后0x00,0x01,0x02,0x03四个字节比较,下一次应该从0x01开始0x01,0x02,0x03,0x04这四个字节比较,这样的方式搜索的,只能用指针进行移动,然后指针转换,所以大哥可能写错了{:10_266:}
页:
1
[2]