1 ////////////////////////////////////////////////////////////////////////// 2 // strcpy strncpy strcat strncat strcmp strlen 3 // 4 #include "stdafx.h" 5 #include "stdio.h" 6 #include "string.h" 7 #include <assert.h> 8 char* m_strcpy(char *dest, const char *src) 9 { 10 assert(dest && src); 11 char *ret = dest; 12 while((*dest++ = *src++) != '\0'); 13 return ret; 14 } 15 16 char* m_strncpy(char *dest, const char *src, size_t n) 17 { 18 19 assert(dest && src); 20 size_t i; 21 for(i = 0;i < n && src[i] != '\0';i++) 22 dest[i] = src[i]; 23 for(;i<n;i++) 24 dest[i] = '\0'; 25 return dest; 26 } 27 28 char* m_strcat(char *dest, const char *src) 29 { 30 assert(dest && src); 31 char *ret = dest; 32 size_t len = strlen(dest); 33 dest += len; 34 while((*dest++ = *src++) != '\0'); 35 return ret; 36 } 37 38 char* m_strncat(char *dest, const char *src, size_t n) 39 { 40 assert(dest && src); 41 size_t len = strlen(dest); 42 size_t i; 43 for(i = 0;i < n && src[i]!='\0';i++) 44 dest[len+i] = src[i]; 45 dest[len+i] = '\0'; 46 return dest; 47 } 48 49 size_t m_strlen(const char *str) 50 { 51 assert(str); 52 size_t len = 0; 53 while(*str++ != '\0') 54 len++; 55 return len; 56 } 57 58 int m_strcmp(const char *str1, const char *str2) 59 { 60 assert(str1 && str2); 61 while(*str1 && *str1 == *str2) 62 { 63 str1++; 64 str2++; 65 } 66 return *str1-*str2; 67 } 68 69 int main(int argc, char* argv[]) 70 { 71 char *c = "555"; 72 char *d = NULL; 73 char h[4] = "abc"; 74 char m[20] = "12333333"; 75 // m_strcpy(h, m); 76 // printf("%s\n", h); 77 m_strncpy(m, c, 4); 78 printf("%s\n", m); 79 // m_strncat(m, c, 1); 80 // printf("%s\n", m); 81 // printf("%d\n", m_strlen(m)); 82 // printf("%d\n", m_strcmp(h, m)); 83 // printf("%d\n", m_strcmp("abd", "abg")); 84 return 0; 85 }