strcpy()の実現について話す

strcpy上書きコピー

  1. コピーされる文字列は「\ 0」で終わる必要があります。

  2. ターゲットスペースは、少なくともコピーを配置できる十分な大きさである必要があります。

  3. ターゲットスペースの値は変更できます。たとえば、定数領域の文字列は、変更できない場合は使用できません。

  4. コピーされた文字列の「\ 0」がターゲットスペースにコピーされます。

  5. 関数の実装。
    方法1

     char* 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'に変更する必要があります。
    方法2

     char* my_strcpy(char* dst, const char* src)
     {
     	const ret = dst;
     	//先赋值,再判断,只要不是\0,代码就继续
     	while (*dst++ = *src++);
     	return ret;
     }		
    

      方法2は、方法1に比べて簡略化されているプレ- ++方法が採用されるプレ- ++ ++は*よりも高い優先順位を有し、ポインタを後退させ、一旦のでないループが存在しない、その後の値srcはdstに割り当てられます。

おすすめ

転載: blog.csdn.net/weixin_43580319/article/details/112140811