利用指针运算实现库函数中的strcpy
#include<stdio.h> char *mystrcpy(char *str, const char *ptr) { char *tmp = str; while((*str++ = *ptr++) != '\0');// 先执行*str = *ptr 再++; return tmp;//返回值 } int main() { char str[20] = "helloworld"; char ptr[20] = "world"; mystrcpy(str, ptr); printf("%s\n", str); return 0; }
利用指针运算实现库函数中的strlen
#include <stdio.h> int mystrlen(char *str) { int i; for(i = 1; *str != '\0'; i++) { *str++; } return (i - 1); } int main() { char str[20] = "Hello"; printf("%d\n", mystrlen(str)); return 0; }
利用指针运算实现库函数中的strcmp
#include <stdio.h> #include <stdlib.h> int mystrcmp(const char *str, const char *ptr) { int i = 0; while(*(str + i) != '\0' && *(ptr + i) != '\0') { if(*(str + i) > *(ptr + i)) { return 1; } if(*(str + i) < *(ptr + i)) { return -1; } ++i; return 0; } if(*str != '\0') { return 1; } if(*ptr != '\0') { return -1; } } int main() { char *str = (char*)malloc(sizeof(char)*64); char *ptr = (char*)malloc(sizeof(char)*64); int m; printf("Please input:"); scanf("%s%s", str, ptr); m = mystrcmp(str, ptr); if(m > 0) { printf("%s > %s", str, ptr); } else if(m < 0) { printf("%s < %s", str, ptr); } else { printf("%s = %s", str, ptr); } return 0; }