溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

模擬實現(xiàn)strcat和strncat

發(fā)布時間:2020-07-05 14:23:53 來源:網(wǎng)絡 閱讀:1085 作者:ChrisApril 欄目:編程語言

    今天我們模擬實現(xiàn)一下strcat和strncat這兩個函數(shù)。

    首先我們先了解一下strcat這個函數(shù),它的意思是將第二個字符串連接到第一個字符串的末尾。我們先看下函數(shù)原型: 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循環(huán)找到第一個字符串的末尾
	{
		dest++;
	}
	while (*dest++ = *src++)  //通過此次while循環(huán)將第二個字符串連接到第一個字符串上
	{
		;
	}
	return ret;
}
int main()
{
	char dest[20] = "hello";
	char *psrc = "world";
	char *ret = my_strcat(dest,psrc);
	printf("%s\n",ret);
	return 0;
}

    下面我們來介紹一下strncat這個函數(shù),其實它大體和strcat這個函數(shù)差不多,但它的區(qū)別在于這個“n”。我們來看一下函數(shù)原型:char *strncat(char *dest , char *src, int n),   這個函數(shù)的功能是把src所指字符串的前n的字符添加到dest結尾處(覆蓋dest結尾處的'\0')并添加'\0'。這個函數(shù)和上一個的區(qū)別就在于這個函數(shù)對第二個字符串的字符數(shù)有要求。那么下面我們看一下代碼:

#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循環(huán),將第二個字符串前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;
}

    通過以上這兩段代碼,我相信大家已經(jīng)能夠了解strcat和strncat這兩個函數(shù)的區(qū)別了。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI