strcat函数

举报
悦来客栈的老板 发表于 2020/12/28 23:25:10 2020/12/28
【摘要】 #include <stdio.h> char* strcat(char *dest, const char *src){//注意*号的位置,紧挨着char,表示返回一个char*型的指针,而紧挨着参数名,表示该参数是一个指针,便于程序的理解。 char *address = dest; if (dest == NULL && src == NUL...

  
  1. #include <stdio.h>
  2. char* strcat(char *dest, const char *src)
  3. {//注意*号的位置,紧挨着char,表示返回一个char*型的指针,而紧挨着参数名,表示该参数是一个指针,便于程序的理解。
  4. char *address = dest;
  5. if (dest == NULL && src == NULL)
  6. {
  7. return dest;
  8. }
  9. while (*dest != '\0')
  10. {
  11. dest++;
  12. }
  13. while ((*dest++ = *src++) != '\0');
  14. return address;
  15. }
  16. int main()
  17. {
  18. char a[100] = "abcdefgihklmn";
  19. char b[100] = "\0opqrstuvwxyz";
  20. mystrcat(a,b);
  21. printf("%s\n",a);
  22. return 0;
  23. }


 

//linux源码


  
  1. /**
  2. * strcat - Append one %NUL-terminated string to another
  3. * @dest: The string to be appended to
  4. * @src: The string to append to it
  5. */
  6. /*
  7. char *strcat(char *dest, const char *src)
  8. {
  9. char *tmp = dest;
  10. while (*dest)
  11. dest++;
  12. while ((*dest++ = *src++) != '\0')
  13. ;
  14. return tmp;
  15. }


 


  
  1. /***
  2. *char *strcat(dst, src) - concatenate (append) one string to another
  3. *
  4. *Purpose:
  5. * Concatenates src onto the end of dest. Assumes enough
  6. * space in dest.
  7. *
  8. *Entry:
  9. * char *dst - string to which "src" is to be appended
  10. * const char *src - string to be appended to the end of "dst"
  11. *
  12. *Exit:
  13. * The address of "dst"
  14. *
  15. *Exceptions:
  16. *
  17. *******************************************************************************/
  18. char * __cdecl strcat (
  19. char * dst,
  20. const char * src
  21. )
  22. {
  23. char * cp = dst;
  24. while( *cp )
  25. cp++; /* find end of dst */
  26. while( *cp++ = *src++ ) ; /* Copy src to end of dst */
  27. return( dst ); /* return dst */
  28. }



//汇编源码


  
  1. char *strcat(char *dest, const char *src)
  2. {
  3. __asm
  4. {
  5. mov eax, dest
  6. mov edx, src
  7. Handlefordest:
  8. mov ecx, DWORD PTR[eax]
  9. cmp ecx, 0
  10. je Begin
  11. inc eax
  12. jmp Handlefordest
  13. Begin:
  14. mov ecx, DWORD PTR [edx]
  15. cmp ecx, 0
  16. je End
  17. mov DWORD PTR [eax], ecx
  18. inc eax
  19. inc edx
  20. jmp Begin
  21. End:
  22. mov DWORD PTR [eax], 0
  23. mov eax, dest
  24. }
  25. }


 

 

文章来源: blog.csdn.net,作者:悦来客栈的老板,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq523176585/article/details/11888585

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。