您好,登錄后才能下訂單哦!
今天我們模擬實現(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ū)別了。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。