从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) 收藏 举报
浙公网安备 33010602011771号