1.模擬實現strncpy 2.模擬實現strncat 3.模擬實現strncmp
阿新 • • 發佈:2018-12-10
1.模擬實現strncpy
//1.模擬實現strncpy #include <stdio.h> #include <windows.h> #include <assert.h> char *my_strncpy(char *dst, const char *src, int n) { assert(dst); assert(src); assert(n > 0); char *cpy = dst; while (n--) { *dst++ = *src++; } return cpy; } int main() { char a[20] = "abcdefgh"; char *p = "1234"; int n = 0; char *ret = my_strncpy(a, p, 5); printf("ret: %s\n", ret); system("pause"); return 0; }
2.模擬實現strncat
//2.模擬實現strncat #include <stdio.h> #include <windows.h> #include <assert.h> char *my_strncat(char *des, const char *src, int count) { assert(des); assert(src); char *cat = des; int i = 0; while (*des != '\0') { des++; } for (; i <count; i++) { *des = *src; des++; *src++; } return cat; } int main() { char a[10] = { 'a', 'b', 'c', '\0' }; char b[20] = "world and bit"; int n = 5; char *ret = my_strncat(a, b, n); printf("ret: %s\n", ret); system("pause"); return 0; }
3.模擬實現strncmp
//3.模擬實現strncmp #include <stdio.h> #include <windows.h> #include <assert.h> int my_strncmp(const char *str1, const char *str2, int n) { assert(str1); assert(str2); assert(n > 0); const char *p = str1; const char *q = str2; while (*p != '\0' && *q != '\0' && (n--)) { if (*p == *q) { p++; q++; } else if (*p > *q) { return 1; } else { return -1; } } if (*p != '\0') { return 1; } if (*q != '\0') { return -1; } } int main() { char *p = "abcd1234"; char *q = "abcd2345"; int n = 5; int ret = my_strncmp(p, q, n); printf("ret = %d\n", ret); system("pause"); return 0; }