/* * Author: MH * Since 2013/10/28 * Toolkit: Code::Block 12.11 */ #include <stdio.h> char *strcpy_implementation(char *strDst, const char *strSrc) { char *newStr = NULL; int strCount = 0; if ((strDst==NULL) || (strSrc==NULL)) { return NULL; } newStr = strDst; while (*(strSrc+strCount)!='\0') { *newStr = *(strSrc+strCount); newStr++; strCount++; } *newStr = '\0'; return strDst; } int main () { char *str1 = "Sample string"; char str2[20]; strcpy_implementation (str2, str1); printf ("str1: %s\n", str1); printf ("str2: %s\n", str2); // str2: Sample string return 0; }
網路上還有看到比較簡潔的寫法
/* * Author: MH * Since 2013/10/28 * Toolkit: Code::Block 12.11 */ #include <stdio.h> void strcpy_implementation2 (char x[], char y[]) { int i = 0; while ((x[i]=y[i])!='\0') { i+=1; } } int main () { char *str1 = "Sample string"; char str2[20]; strcpy_implementation2 (str2, str1); printf ("str1: %s\n", str1); printf ("str2: %s\n", str2); // str2: Sample string return 0; }
/* * Author: MH * Since 2013/10/28 * Toolkit: Code::Block 12.11 */ #include <stdio.h> char *strncpy_implementation(char *strDst, const char *strSrc, int strLength) { char *newStr = NULL; int strCount = 0; if ((strDst==NULL) || (strSrc==NULL)) { return NULL; } newStr = strDst; while ((*(strSrc+strCount)!='\0') && (strCount<strLength)) { *newStr = *(strSrc+strCount); newStr++; strCount++; } *newStr = '\0'; return strDst; } int main () { char *str1 = "Sample string"; char str2[20]; strncpy_implementation (str2, str1, 4); printf ("str1: %s\n", str1); printf ("str2: %s\n", str2); // str2: Samp return 0; }
沒有留言:
張貼留言