`

strcat 内部实现

    博客分类:
  • c++
阅读更多

char * strcat(char * dest, const char * src)
{
        char *tmp = dest;

        while (*dest)
                dest++;
        while ((*dest++ = *src++) != '\0')
                ;

        return tmp;
}



编写一个名叫my_strcat 的函数,它类似于strcat函数 但它不会溢出目标数组,它应该返回调用时传递的目标字符串,函数原型
char* str_my_strcat(char *des,char const *src)
这样需要重新分配空间:
char * strcat(char * dest, const char * src) 
//参数必须传双指针才能在内部进行内存分配(Remalloc),否则新指针不能返回导致异常

//(该异常比较隐蔽,主要为Remalloc有可能改变指针,也有可能不改变指针)

{
  char *tmp = dest;   

  tmp = remalloc(*dest, strlen(dest)+strlen(src)+1);
  while (*tmp)
  tmp++;
  while ((*tmp++ = *src++) != '\0')
  ;

  return tmp;
}


这个虽然可以保证数据的正确,但是dest的地址与新数组的地址不一定完全一样。
莫非传递引?
分享到:
评论

相关推荐

    常用函数的实现strcpy,memcpy,memmove,strcat,strcmp原型

    本文将深入解析五个常用的C语言函数:`strcpy`、`memcpy`、`memmove`、`strcat`和`strcmp`的实现原理与功能特性,这些函数在处理字符串复制、连接、比较以及内存拷贝时扮演着关键角色。 ### 1. `strcpy` - 字符串...

    string类函数的c实现

    这些函数都是C语言中处理字符串时非常重要的工具,了解它们的内部实现不仅有助于理解标准库的工作原理,还能在需要优化性能或进行底层操作时提供更精细的控制。通过以上分析,我们可以看到,虽然C语言的标准库提供了...

    使用字符指针实现的一个简单string类

    6. **字符串连接函数`strcat`**:`strcat`函数将一个字符串追加到另一个字符串的末尾。自定义的`string`类应提供类似功能的成员函数,如`MyString& MyString::concat(const MyString &other)`,返回一个引用以便支持...

    实现缺省参数的函数Printf

    同时,对`Strlen`、`Strcpy`和`Strcat`的实现理解也能增强你在字符串操作方面的技能。这种实践性的学习有助于加深对C语言底层机制的理解,特别是指针操作和函数调用机制,对于提升编程能力十分有益。

    学生学籍管理系统c语言实现

    - 指针用于高效地处理结构体数组或单个结构体,如传递结构体指针到函数,以便在函数内部修改数据。 4. **链表数据结构**: - 由于C语言没有内置的动态数组,学生信息可能会用链表数据结构存储,方便插入、删除...

    字符串相关函数实现(自己编写的)

    此外,良好的封装意味着这些函数对外部用户透明,隐藏了内部实现细节,使代码更易于理解和维护。 总的来说,这个自编的字符串函数库提供了一套基础但实用的工具,适用于各种文本处理场景。通过理解这些基本操作,...

    string.h函数的实现

    #### 三、`strcat`函数实现 `strcat` 函数用于将一个字符串追加到另一个字符串的末尾。 ##### `mystrcat` ```c char *mystrcat(char *dst, const char *src) { char *p = dst; while (*p) // *p++ 移动到 dst ...

    c标准库函数 源码实现

    2. **字符串处理函数**:如 `strcpy`、`strlen`、`strcat`、`strcmp` 等。这些函数用于复制、计算长度、连接和比较字符串。源码分析可以帮助我们理解C语言中如何处理字符数组,以及字符串操作的细节。 3. **内存...

    the standard C library书,本书讲述标准C库的一种实现。

    《标准C库》这本书是C语言编程领域的一部经典之作,它深入剖析了标准C库的内部机制,为读者提供了一种实现C库的详细视图。通过阅读这本书,你可以了解到C库中的各种函数和数据结构是如何工作的,这对于提升编程技巧...

    leetcode C语言实现.zip

    通过C语言实现LeetCode的题目,开发者可以深入理解算法的内部工作原理,提升编程技巧,并锻炼解决问题的能力。 在C语言实现LeetCode题目时,常见的知识点包括: 1. **基础数据类型**:如整型(int)、浮点型(float/...

    数据结构串的基本操作实验报告

    函数内部通过`strncmp`函数来比较子串与主串的对应部分,找到匹配的子串后返回其起始位置。 #### 三、实验代码与调试 实验中的源代码已经给出了具体的实现细节。值得注意的是,在调试过程中发现了一些问题,比如`...

    程序员的自我修养第十三章 MiniCRT实现代码

    3. **字符串处理**:`strcpy`, `strcat`, `strcmp`等字符串操作函数是C语言中常见的。MiniCRT将展示这些函数的内部逻辑,如何安全高效地处理字符数组。 4. **数学运算**:基础的数学函数,如平方根、幂运算等,虽然...

    严蔚敏《数据结构》代码实现(C语言)

    这个压缩包提供的C语言代码实现,不仅可以帮助学习者直观地理解各种数据结构的内部工作原理,还能通过实际编程锻炼编程技巧。对于准备面试、项目开发或者深入学习数据结构的人来说,这是一份非常实用的学习资料。...

    200个C语言常用函数实现代码大全.rar

    这个压缩包通过具体的代码示例,帮助开发者理解和掌握这些函数的用法和内部实现,对于提高编程技巧和深入理解C语言机制非常有帮助。学习这些函数不仅可以提升编程效率,还能培养良好的编程习惯和问题解决能力。

    Oracle P/L SQL实现发送Email、浏览网页等网络操作功能

    --内部附件生成目录(Oracle的目录) --Clob叠加比较慢,先用VarChar2叠加到4000个字符后才叠加到Clob字段 --UTL_INet.p_ClobCAT( Procedure p_ClobCAT( ac_HTMLText in Out Clob, as_CatText in ...

    c语言实现非常漂亮祝福烟花效果.zip

    在主函数内部,会调用其他辅助函数来分别处理不同的任务,如绘制烟花、显示祝福语、随机生成烟花颜色和位置等。这些辅助函数可以通过函数指针进行调用,以增加代码的模块化和可读性。 在烟花效果的实现上,C语言的...

    C语言实现文件扫描

    在程序开发中,特别是在系统管理、数据处理等领域,对文件夹及其内部文件进行遍历是非常常见的需求。通过递归的方式进行文件夹的遍历可以有效地减少资源消耗,并且能够清晰地展示出文件系统的层次结构。 #### 二、...

    c语言内部培训c源码

    在C语言内部培训中,你将深入学习C语言的基础与高级概念,这涵盖了从基本语法、数据类型到复杂的指针操作、内存管理以及结构体和共用体等。以下是这个培训可能涵盖的一些关键知识点: 1. **C语言基础**: - 变量:...

    关于C语言字符串函数使用的一点心得[文].pdf

    `strcat`函数的内部实现通常如下: ```c char *strcat(char *strDest, const char *strScr) { char *address = strDest; assert((strDest != NULL) && (strScr != NULL)); while(*strDest) { strDest++; } ...

    【例6.4】用友元函数重载运算符实现两字符串加法.pdf

    函数内部首先将第一个字符串复制到静态字符数组`str`,然后使用`strcat`函数将第二个字符串追加到`str`的末尾,最后返回一个新的`String`对象,该对象的`name`成员是拼接后的字符串。 在`main`函数中,我们创建了几...

Global site tag (gtag.js) - Google Analytics