strcpy上書きコピー
-
コピーされる文字列は「\ 0」で終わる必要があります。
-
ターゲットスペースは、少なくともコピーを配置できる十分な大きさである必要があります。
-
ターゲットスペースの値は変更できます。たとえば、定数領域の文字列は、変更できない場合は使用できません。
-
コピーされた文字列の「\ 0」がターゲットスペースにコピーされます。
-
関数の実装。
方法1char* my_strcpy(char* dst, const char* src) { const ret = dst; while (*src) { *dst = *src; dst++; src++; } *dst = '\0'; return ret; }
retは文字列の最初のアドレスを記録し、関数を呼び出すときにmy_strcpy(str1、my_strcpy(str1、p1));のようにネストするために、関数の戻り値をchar *に設定します。strcpycopyはコピーであるためです。 '\ 0'なので、最後に、* dstが指す最後のコンテンツを '\ 0'に変更する必要があります。
方法2char* my_strcpy(char* dst, const char* src) { const ret = dst; //先赋值,再判断,只要不是\0,代码就继续 while (*dst++ = *src++); return ret; }
方法2は、方法1に比べて簡略化されているプレ- ++方法が採用されるプレ- ++ ++は*よりも高い優先順位を有し、ポインタを後退させ、一旦のでないループが存在しない、その後の値srcはdstに割り当てられます。