今天我們模擬實(shí)現(xiàn)一下strcat和strncat這兩個(gè)函數(shù)。
創(chuàng)新互聯(lián)公司2013年至今,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元革吉做網(wǎng)站,已為上家服務(wù),為革吉各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575
首先我們先了解一下strcat這個(gè)函數(shù),它的意思是將第二個(gè)字符串連接到第一個(gè)字符串的末尾。我們先看下函數(shù)原型: char *strcat(char *dest, char *src) 把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'。下面我們來看一下程序:
#include#include char *my_strcat (char *dest, char *src) { char *ret = dest; assert(dest); assert(src); while (*dest) //通過while循環(huán)找到第一個(gè)字符串的末尾 { dest++; } while (*dest++ = *src++) //通過此次while循環(huán)將第二個(gè)字符串連接到第一個(gè)字符串上 { ; } return ret; } int main() { char dest[20] = "hello"; char *psrc = "world"; char *ret = my_strcat(dest,psrc); printf("%s\n",ret); return 0; }
下面我們來介紹一下strncat這個(gè)函數(shù),其實(shí)它大體和strcat這個(gè)函數(shù)差不多,但它的區(qū)別在于這個(gè)“n”。我們來看一下函數(shù)原型:char *strncat(char *dest , char *src, int n), 這個(gè)函數(shù)的功能是把src所指字符串的前n的字符添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'。這個(gè)函數(shù)和上一個(gè)的區(qū)別就在于這個(gè)函數(shù)對(duì)第二個(gè)字符串的字符數(shù)有要求。那么下面我們看一下代碼:
#include#include void *my_strncat(char *dest, const char *src,int n) { assert(dest); assert(src); while (*dest != '\0') { dest++; } while (n--) //通過此次while循環(huán),將第二個(gè)字符串前n的字符連接到第一個(gè)字符串上 { *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這兩個(gè)函數(shù)的區(qū)別了。