strcpy 一题
题目要求:
Write a function about string copy, the strcpy prototype is "char *strcpy (char *strDest, const char *strSrc); "
Here strDest is destination string, strSrc is source string.
1) Write the function strcpy, don't call C/C++ string library.
2) Here strcpy can copy strSrc to strDest, but why we use char * as the return value of strcpy?
问题解决:
1)代码实现
#include <stdio.h> #include <assert.h> char *sstrcpy(char *strdst, const char *strsrc) { assert(strdst != NULL && strsrc != NULL); char *ret_str = strdst; while ((*strdst++ = *strsrc++) != '\0'); return ret_str; } int main(int argc, char **argv) { char dst[20] = {0}; char *src = "abcde"; printf("res = %s\n", sstrcpy(dst, src)); return 0; }
2)返回字符串指针,是为了实现链式表达。Unix设计哲学思想。
比如
printf("res = %s\n", sstrcpy(dst, src));