19

来源:互联网 发布:java拼图游戏课程设计 编辑:程序博客网 时间:2024/05/01 01:36

实现strcpy 

#include <stdio.h>  #include<assert.h>  void my_strcpy(char *dest, const char *src){assert(dest != NULL);assert(src != NULL);while (*dest++ = *src++){;}}int main(){char a[10]; char *q = "bcdef";my_strcpy(a, q);printf("%s\n", a);return 0;}

实现strcat 

#include <stdio.h>#include <assert.h>void my_strcat(char *dest, const char *src){assert(dest);assert(src);while (*dest != '\0'){dest++;}while (*dest++ = *src++){;}}int main(){char a[20] = "abcdef";char b[] = "abdt";strcat(a, b);printf("%s\n", a);return 0;}

实现strstr 

#include<stdio.h>char* my_strstr(const char* longstr, const char*  shortstr){char* lstart = (char*)longstr;char* sstart = (char*)shortstr;int count = 0;while (lstart){if (!*sstart){return (char*)(lstart - count);}else if (*lstart == *sstart){count++;lstart++;sstart++;}else{if (!count){lstart++;}sstart = (char*)shortstr;count = 0;}}}int main(){char* longstr = "abcd123abcfer";char* shortstr = "bcf";char*ret =shortstr;ret=my_strstr(longstr, shortstr);printf("%s", ret);return 0;}

实现strchr 

#include<stdio.h>#include<assert.h>char* my_strchr(const char *dest, const  char c){assert(dest);assert(c);while (*dest != '\0'){if (*dest == c){return dest;}dest++;}}int main(){char*ret = NULL;char*s = "strtemp=strchrstrcharacter";char c = '=';ret=my_strchr(s, c);printf("%s", ret);return 0;}

实现strcmp 

#include <stdio.h>#include <string.h>int mystrcmp(const char *dst,const char *src){int tmp = 0;int ldst = 0;int lsrc = 0;ldst = strlen(dst);lsrc = strlen(src);if (ldst > lsrc){return 1;}if (ldst < lsrc){return -1;}if (ldst == lsrc){while ((!(tmp = *(unsigned char*)dst - *(unsigned char*)src)) && *dst){dst++;src++;}if (tmp > 0){return 1;}if (tmp < 0){return -1;}return 0;}}int main(int argc, char const *argv[]){char *a = "abcdefg";char *b = "abbdefg";int ret = 0;ret = mystrcmp(a, b);switch (ret){case 1:printf("a大于b");break;case -1:printf("a小于b");break;case 0:printf("a等于b");break;}return 0;}

实现memcpy 

#include<stdio.h>void my_memcpy(void *dest, const void *src,int count){while (count--){*(char*)dest == *(char*)src;dest = (char*)dest + 1;src = (char*)src + 1;}}

实现memmove

void memmove(void* dst, const void* src, int count){if (dst <= src || (char*)dst >= ((char*)src + count)){while (count--){*(char*)dst = *(char*)src;dst = (char*)dst + 1;src = (char*)src + 1;}}else{dst = (char*)dst + count - 1;src = (char*)src + count - 1;while (count--){*(char*)dst = *(char*)src;dst = (char*)dst - 1;src = (char*)src - 1;}}}
原创粉丝点击