C语言模拟实现strcpy、strncpy、strcmp、strcat、strstr
2017-07-10 17:26
645 查看
1,模拟实现strcpy
功能:字符串拷贝函数代码:
char* my_strcpy(char* dest, const char* src) { assert(dest); assert(src); char* ret = dest; while (*dest++ = *src++) { ; } return ret; }
测试:
int main() { char str1[20];//必须给足够大的空间保证str2能存储 char* str2 = "HowAreYou"; char* ret = my_strcpy(str1, str2); printf("%s\n", ret); system("pause"); return 0; }
2,模拟实现strncpy
功能:类似于strcpy,可以将字符串中的n个字符拷贝代码:
char* my_strncpy(char* dest, const char* src, int n) { assert(dest); assert(src); char* ret = dest; while (n) { *dest++ = *src++; n--; } if (*(dest - 1) != '\0'); { *dest = '\0'; } return ret; }
测试:
int main() { char str1[5]; char* str2 = "abcdefg"; char* ret = my_strncpy(str1, str2,4); printf("%s\n", ret); system("pause\n"); return 0; }
3,模拟实现strcmp
功能:字符串比较函数,相等返回0,小于返回小于0的数,大于则返回大于0的数代码:
int my_strcmp(char* arr, char* str) { assert(arr); assert(str); while (*arr == *str) { if (*arr == '\0' || *str == '\0') { return 0; } arr++; str++; } return *arr - *str; }
测试:
int main() { char *p1 = "ab"; char *p2 = "abcd"; char *p3 = "defab"; printf("%d\n", my_strcmp(p1, p1)); //0 printf("%d\n", my_strcmp(p1, p2)); //-99 printf("%d\n", my_strcmp(p1, p3)); //-3 printf("%d\n", my_strcmp(p3, p1)); //3 system("pause\n"); return 0; }
4,模拟实现strcat
功能:字符串追加函数代码:
char* my_strcat(char* dest, char* src) { assert(dest); assert(src); char* ret = dest; while (*dest) { *dest++; } while (*dest++ = *src++) { ; } return ret; }
测试:
int main() { char str1[20] = "hello "; char* str2 = "world"; char* ret = my_strcat(str1, str2); printf("%s\n", ret); system("pause\n"); return 0; }
5,模拟实现strstr
功能:判断一个字符串是否是另一个字符串的子串,如果是,则返回在这个字符串中首次出现的位置,如果不是,返回NULL代码:
char* my_strstr(const char* str, const char*substr) { const char* s1 = str; const char* s2 = substr; const char* cur = str; assert(str); assert(substr); if (*substr == '\0') { return str; } while (cur) { s1 = cur; s2 = substr; while (*s1 == *s2) { s1++; s2++; } if (*s2 == '\0') return cur; if (*s1 == '\0') return NULL; cur++; } return NULL; }
测试:
int main() { const char* str = "abcdefg"; const char* substr = "bcd"; char* ret = my_strstr(str, substr); if (ret == NULL) { printf("No\n"); } else { printf("%s\n", ret); } system("pause\n"); return 0; }
相关文章推荐
- [C语言]模拟实现strcpy/strncpy/strcat/strncat/strcmp/strncmp/strstr
- C语言字符串函数的模拟实现(strlen、strcpy、strcat、strstr 、strcmp)
- 模拟实现strcpy,strcmp,strstr,strncpy,strncmp,strcat,strlen函数
- 模拟实现strcmp,strncmp,strstr,strcat,strncat,strcpy,strncpy,strlen ,memcpy,memmove等函数
- [C语言]strcat strstr strcpy strcmp strlen 的实现与使用
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove
- strlen,strcpy,strncpy,strcmp,strcat,strstr的用法,函数原型及函数的实现
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- strlen strcmp strcat strcpy strncpy strstr strchar函数的实现
- c语言中有关字符串函数strcpy,strcmp,strcat,strstr的模拟实现
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- c语言:strcpy、strncpy、 Strcat、 Strcmp 、strchr、 strstr、 Strlen等函数功能
- 模拟实现部分库函数(strcpy,strcmp,strcat,strstr,memcpy,memmove,memset)
- 【C语言】str类与men库函数的实现(如:strcpy,strcmp,strstr,strcat,memmove,memcpy)
- C语言中strlen、strcpy、strncpy、strcat、strnact、strcmp、memcpy函数的实现
- 模拟实现strcpy 模拟实现strncpy 模拟实现strcat 模拟实现strncat 模拟实现strcmp 模拟实现strncmp 模拟实现memcpy 模拟实现memmove
- 模拟实现strstr,strcpy,strlen,strcat,strcmp,memcpy,memmove
- c语言:strcpy、strncpy、 Strcat、 Strcmp 、strchr、 strstr、 Strlen等函数功能