strcat 的自我延伸实现(strncat)!!

前两天上课的时候我们老师给我们讲了strcat的自我实现,当时听着很复杂,不过后来老师又把它布置成了作业。今天写完作业后,我有一种醍醐灌顶的感觉。估计老师的用意就在此了。

下面我将写出我自己实现strcat的代码,并且这个要追加的字符长度是由自己控制的。

听起来还不错,是不是。。。(*^__^*) 嘻嘻……

#include<stdio.h>

#include<assert.h>

char *my_strncat(char *dest, const char *src, unsigned int n)

{

assert(dest);

assert(src);

char *ret = src;//标记src的首地址,是因为src在下面要参与运算

while (*dest)

{

dest++;

}

while (n)//你想追加的字符串长度

{

*dest++ = *src++;

n--;

}

*dest = ‘\0‘;

return ret;

}

int main()

{

char p1[20] = "hello";

char p2[20] = "world";

int n = 0;

scanf("%d",&n);

char *ret = my_strncat(p1, p2, n);

printf("%s\n",p1);

system("pause");

return 0;

}

值得注意的是,我们在传参的时候,因为p2不会发生变化,所以我们要用const对p2字符串进行保护。使用CONST在一定程度上可以提高程序的安全性和可靠性,另外,在别人观看代码的时候,清晰理解CONST所起的作用,对理解对方的程序也有一些帮助。

时间: 2024-08-26 02:22:52

strcat 的自我延伸实现(strncat)!!的相关文章

C和C++的字符串

之前学习c和c++,并没有总结字符串的知识,所以总是在这方面傻傻搞不清楚,最近两天复习了一下,搞明白了很多以前不懂的东西,现在写一篇总结 字符串表示方法 C和C++都有各自的字符串表示方法,C的字符串本质上是字符数组,声明方法如下: char str[]; char str1[10]; char* str2; 而C++中新添加 了string类来表示字符串,声明方法如下: #include<string> string str="zi fu chuan"; string s

C语言字符串操作总结大全(超详细)

1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1

C/C++常用头文件及函数汇总

C/C++头文件一览 C #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> //定义错误码#include <float.h> //浮点数处理#include <iso646.h>        //对应各种运算符的宏#include <limits.h> //定义各种数据类型最值的常量#include <locale.h> //定

Strlcpy和strlcat——一致的、安全的字符串拷贝和串接函数

概述 随着流行的缓冲区溢出攻击的增加,越来越多程序员开始使用带有大小,即有长度限制的字符串函数,如strncpy() 和strncat() .尽管这种趋势令人十分鼓舞,但通常的标准C 字符串函数并不是专为此而设计的.本文介绍另一种直观的,一致的,天生安全的字符串拷贝API . 当函数 strncpy()和 strncat()作为 strcpy()和 strcat()的安全版本来使用时,仍然存在一些安全隐患. 这两函数以不同的,非直观的方式来处理NUL 结束符和长度参数,即使有经验的程序员也会混淆

面试之C语言字符串操作总结大全(转载)

趁着十一就好好补补数据结构吧,通信这个不软不硬的专业,现在还是得好好学学补习补习,,你这个非211的本科生!虽然拿到了一个offer,但是觉得时间还有,得继续拼一拼,希望不辜负! 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符

C语言字符串操作大全

转载自:C语言字符串操作总结大全(超详细) 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c)

C89_一些函数

C89 string.h 中的函数: 复制函数 memcpy memmove strcpy strncpy 串接函数 strcat strncat 比较函数 memcmp strcmp strcoll strncmp strxfrm 查找函数 memchr strchr strcspn strpbrk strrchr strstr strtok 其他函数 memset strerror strlen C89 signal.h signal 发送信号 raise C

银联二维码支付注定前景悲观

就在央行暂停二维码支付3个多月以后,近日有消息曝出银联将要插手二维码支付项目,打造自己的二维码支付体系.随后银联也正式回应,早已着手研究二维码支付,将在合规后推出.此言一出,立刻引起业内轩然大波.在二维码支付生态链条尚未完全打通的情况下,银联凭借央行的支持捷足先登,真的能够获得成功?在笔者看来,银联只是在裸泳,前景注定悲观. 只能单干 前景悲观 银联和互联网企业在以往的较量中,银联总是趋于下风.这是因为二者的理念并不相同,银联是守旧势力的代表,依然想凭借自己的垄断地位闷声发大财.而互联网企业则想

C语言里字符串的解析

原文网摘:http://www.cnblogs.com/yi-meng/p/3620244.html#undefined 根据给定的字符串,按照一定规则解析字符串,卡住好几次,这次做个笔记,以供参考 函数名称:   strtok 函数原型:   char *strtok(char *s1, const char *s2) 函数功能:   分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 函数返回:   字符串s1中首次出现s2中的字符前的子字符串指针 参数说明:   s