模拟实现strcat和strncat

今天我们模拟实现一下strcat和strncat这两个函数。

首先我们先了解一下strcat这个函数,它的意思是将第二个字符串连接到第一个字符串的末尾。我们先看下函数原型: char *strcat(char *dest, char *src) 把src所指字符串添加到dest结尾处(覆盖dest结尾处的‘\0‘)并添加‘\0‘。下面我们来看一下程序:

#include <stdio.h>
#include <assert.h>
char *my_strcat (char *dest, char *src)
{
	char *ret = dest;
	assert(dest);
	assert(src);
	while (*dest)    //通过while循环找到第一个字符串的末尾
	{
		dest++;
	}
	while (*dest++ = *src++)  //通过此次while循环将第二个字符串连接到第一个字符串上
	{
		;
	}
	return ret;
}
int main()
{
	char dest[20] = "hello";
	char *psrc = "world";
	char *ret = my_strcat(dest,psrc);
	printf("%s\n",ret);
	return 0;
}

下面我们来介绍一下strncat这个函数,其实它大体和strcat这个函数差不多,但它的区别在于这个“n”。我们来看一下函数原型:char *strncat(char *dest , char *src, int n),   这个函数的功能是把src所指字符串的前n的字符添加到dest结尾处(覆盖dest结尾处的‘\0‘)并添加‘\0‘。这个函数和上一个的区别就在于这个函数对第二个字符串的字符数有要求。那么下面我们看一下代码:

#include <stdio.h>
#include <assert.h>
void *my_strncat(char *dest, const char *src,int n)
{
	assert(dest);
	assert(src);
	while (*dest != ‘\0‘)
	{
		dest++;
	}
	while (n--)  //通过此次while循环,将第二个字符串前n的字符连接到第一个字符串上
	{
		*dest++ = *src++;
	}
	*dest = ‘\0‘;
}
int main()
{
	char arr1[10] = "abc";
	char arr2[] = "defgh";
	int num = 0;
	scanf("%d",&num);
	my_strncat(arr1,arr2,num);
	puts(arr1);
	return 0;
}

通过以上这两段代码,我相信大家已经能够了解strcat和strncat这两个函数的区别了。

时间: 2025-01-06 01:27:06

模拟实现strcat和strncat的相关文章

连接函数strcat与strncat

题目: 编写程序实现函数strcat和strncat. 题目分析: strcat的主要是将一个字符串连接到另一个字符串之后的位置,例如:将字符串"def"拷贝到字符串"abc"之后,得到新的字符串为"abcdef". strncat将一个字符串的几个字符连接到另一个字符串之后,可以限制连接的字符串数. 下面是自定义my_strcat的实现: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.

C语言::模拟实现strcat函数

题目要求 编写一个C语言程序模拟实现strcat函数. (我们不妨先模拟实现一下strcat函数,然后再对照一下string.h库函数中strcat函数代码的实现,与大师肩并肩.) 算法分析 strcat函数功能:将两个字符串连接起来,最终返回连接后字符串的首地址. strcat函数原型:char *strcat(char *dest,const char *src); 我们清楚地了解了strcat函数功能和原型之后,就很容易分析出算法... 算法总结 第一步:将dest指向的内容循环遍历至'\

字符串函数---strcat()与strncat详解及实现

一.strcat()与strncat() strcat():strcat(dest,src);        strcat把src所指向的字符添加到dest结尾处(覆盖原dest结尾处的'\0'),并添加新的'\0'. 说明:src和dest所指内存区域不可以重叠,并且dest必须有足够的空间来容纳src的字符串,返回指向dest的指针. strncat():strncat(dest,src,n);      strncat把速溶茶所指向的字符的前n个字符添加到dest结尾处(覆盖原dest结尾

模拟实现strcat

#include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> char*my_strcat(char*dest, const char*src) { assert(dest!=NULL); assert(src); char*ret = dest; while (*dest) { dest++; } while (*dest++ = *src++) { ; } retur

C语言:模拟实现strcat

#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strcat(char *dest, char *src) {     assert(dest);     assert(src);     char *ret = src;     while (*src)     {         src++;     }     wh

用c语言.模拟实现strcpy,strcat,strcat,memcpy,memmove

1.模拟实现strcpy #include<stdio.h> #include<stdlib.h> #include<string.h> #include<assert.h> char *my_strcpy(char *dst, const char *src) { assert(dst != NULL); assert(src != NULL); char *ret = dst; while ((*dst++ = *src++) != '\0') ; re

strcmp,strcpy,strcat,strncmp,strncpy,strncat,自实现精炼版本

1strcmp and strncmp 1 #include <stdio.h> 2 #include <string.h> 3 /* 4 strcmp and strncmp 自实现 5 */ 6 int mystrcmp(const char *str,const char *str1) 7 { 8 for(;*str&&*str1&&*str == *str1;str++,str1++); 9 return *str - *str1; 10 }

部分函数功能的实现

1:strcpy的实现 函数功能:把从src地址处开始的字符串拷贝到以dest为开始地址的空间里, 其中包含src字符串结尾处的'\0'. 代码实现: #include<stdio.h>//模拟实现strcpy#include<assert.h>void my_strcpy(char *dest,  const char *src)/*函数不需要返回*/{    assert(dest); assert(src); while(*src)/*把src的字符从前到后往dest里拷贝*

C语言字符/字符串相关函数收藏

字符处理函数 int tolower(char ch)若ch是大写字母('A'-'Z')返回相应的小写字母('a'-'z') int toupper(char ch)若ch是小写字母('a'-'z')返回相应的大写字母('A'-'Z') int _tolower(char ch)返回ch相应的小写字母('a'-'z') int _toupper(char ch)返回ch相应的大写字母('A'-'Z') int toascii(char c)返回c相应的ASCII 举个栗子: #include<s