自己编写函数来实现strncpy与strncat函数
#include#include #include char* my_strncat(char* dest, char* src, int y) { char* result = dest; assert(*dest && *src);//断言dest与src指向的数组不为空,只要有一个为空式子就不会成立 while (*dest++);//循环,直到出现‘ ’时退出循环 dest--;//上行代码用的是后置++,也就是说此时的dest指向的是‘ ’的下一个地址 while (y && (*dest++ = *src++) )//同时实现了将src指向的元素赋给了*dest { y--; } //循环,当y也就是追加字符的个数降到0或者src指向的数组的元素为‘ ’时停止 *dest = ' ';//将最后一个元素赋为‘ ’ return result;// }//strncat的实现 char* my_strncpy(char* dest, char* src, int x) { int i = 0; assert(*dest && *src);//断言 char* result = dest; for (i = 0; i < x; i++ ) { if (*src == ' ') { *dest++ = ' '; } else *dest++ = *src++;//若src指向的元素为‘ ’,也赋予*dest一个‘ ’并继续循环,若不为‘ ’,则将src指向的元素赋予*dest }//循环,当循环次数不小于复制的字符个数时停止 return result; }//strncpy的实现 int main() { char arr1[100] = "woshiderlin"; char arr2[] = "hello"; char* a=my_strncpy(arr1,arr2,3); printf("%sn", a); char* b = my_strncat(arr1, arr2, 4); printf("%sn", b); return 0; }



