从buf所指内存区域的前count个字节查找字符ch以及手动使用指针法和下标法实现 ------ memchr

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #include<memory.h>
 5 
 6 /*
 7     功能:从buf所指内存区域的前count个字节查找字符ch。
 8 
 9     说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。
10 */
11 
12 void *indexmemchr(void *start, char ch, int maxlength);//下标法手动实现memchr
13 
14 void *pointmemchr(void *start, char ch, int maxlength);// 指针法手动实现memchr
15 
16 void  main()
17 {
18     char str[128] = "lisiBeijing";
19 
20     int *p = memchr(str, 'B', 128);
21 
22     /**************调用手动实现的方法实现判断*************************/
23     //int *p = indexmemchr(str,'B',128);// 下标法
24 
25     //int *p = pointmemchr(str, 'B', 128);// 指针法
26 
27     if (p==NULL)
28     {
29         printf("没有找到\n");
30     }
31     else
32     {
33         printf("找到%p %s",(char*)p,(char*)p);
34     }
35 
36 
37     system("pause");
38 }
39 
40 // 下标法手动实现memchr
41 void *indexmemchr(void *start, char ch, int maxlength)
42 {
43     char *p = NULL;
44     for (int i = 0; i < maxlength; i++)
45     {
46         if (((char*)start)[i] == ch)
47         {
48             p = (char*)start + i;//类型转换
49             break;
50         }
51     }
52     return p;
53 }
54 
55 
56 // 指针法手动实现memchr
57 void *pointmemchr(void *start, char ch, int maxlength)
58 {
59     char *p = NULL;
60     for (char *ps = start; ps<(char*)start + maxlength; ps++)//指针循环
61     {
62         if (*ps == ch)
63         {
64             p = ps;
65             break;
66         }
67     }
68     return p;
69 
70 }

 

posted on 2015-05-12 16:46  Dragon-wuxl  阅读(203)  评论(0)    收藏  举报

导航