中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

C語言怎么實現strcpy與strcat函數

發布時間:2022-04-11 09:10:57 來源:億速云 閱讀:255 作者:iii 欄目:開發技術

這篇文章主要介紹“C語言怎么實現strcpy與strcat函數”,在日常操作中,相信很多人在C語言怎么實現strcpy與strcat函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”C語言怎么實現strcpy與strcat函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

    一、strcpy函數的介紹

    1.函數的聲明

    char* strcpy(char * destination, const char * source );

    2.函數功能與注意事項

    • 將源指向的字符串復制到目標指向的數組中,包括終止空字符(并在該點停止)。

    • 源字符串必須以 '\0' 結束。

    • 會將源字符串中的 '\0' 拷貝到目標空間。

    • 目標空間必須足夠大,以確保能存放源字符串。

    • 目標空間必須可變。

    3.函數的使用

    #include<stdio.h>
    #include<string.h>//使用strcpy函數時記得引用它的頭文件
     
    int main()
    {
    	char ch2[7] = "abcdef";
    	char ch3[10];//ch3為目標數組,空間必須比ch2大
    	strcpy(ch3, ch2);
    	printf("%s\n", ch3);
    	return 0;
    }

    運行結果

    C語言怎么實現strcpy與strcat函數

    二、模擬實現strcpy函數

    1.模擬分析

    1.我們需要將源指向的字符串復制到目標指向的數組中,包括終止空字符,所以我們就可以一個字符一個字符的復制過去,注意終止空字符'\0'也要復制過去,如果沒有將&lsquo;\0&rsquo;復制過去的話,后面如果想要打印將這個賦值過去的字符串的話就會出現問題。

    2.因為我們源指向的字符串是不需要改變的,所以我們需要將我們源指向的字符串用const限制,以防它被改變,讓其變得更安全。

    3.為了避免傳進來的地址是空指針,我們需要用assert來斷言傳進來的地址不是空指針。

    4.為了實現鏈式訪問,我們要將傳進來的目標起始地址(destination)返回。由于這個函數在執行的時候會改變destination存儲的內容,所以我們要重新創建一個char*類型的指針來存儲這個地址。

    2.模擬實現

    下面代碼有點干,需要細品,建議收藏以免忘記。

    #include<stdio.h>
    #include<assert.h>
    char* my_strcpy(char* dest, const char* src)
    {
    	assert(dest && src);
    	char* ret = dest;
    	while (*dest++ = *src++)
    	{
    		;
    	}
    	return ret;
    }
    int main()
    {
    	char ch2[7] = "abcdef";
    	char ch3[10];//ch3為目標數組,空間必須比ch2大
    	my_strcpy(ch3, ch2);//將ch2中的字符串復制到ch3中
    	printf("%s\n", my_strcpy(ch3, ch2));//鏈式訪問
    	return 0;
    }

    運行結果

    C語言怎么實現strcpy與strcat函數

    三、strcat函數的介紹

    1.函數的聲明

    char * strcat ( char * destination, const char * source );

    2.函數功能與注意事項

    • 將源字符串追加到目標字符串。目標字符串的終止空字符'\0'被源字符串的第一個字符覆蓋,并包含一個終止空字符'\0'在新字符串的末尾,由兩者在目的地連接而成。

    • 源字符串必須以 '\0' 結束。

    • 目標空間必須有足夠的大,能容納下源字符串的內容。

    • 目標空間必須可修改。 

    3.函數的使用

    #include<stdio.h>
    #include<string.h>//使用strcat函數時記得引用它的頭文件
     
    int main()
    {
    	char ch2[4] = "def";
    	char ch3[7] = "abc"; //ch3為目標數組,空間必須比ch2大
    	strcat(ch3, ch2); //將ch2中的字符串追加到ch3中
    	printf("%s", ch3);
    	return 0;
    }

    運行結果

    C語言怎么實現strcpy與strcat函數

    四、模擬實現strcat函數

    1.模擬分析

    1.我們追加字符串時是將源字符串追加到目標字符串里面,我們需要將從目標字符串里面'\0'的位置開始追加,所以我們首先就需要找到目標字符串中'\0'的位置。并且我們追加完后需要在字符串的追后多追加一個'\0',使這個新字符串完整。

    2.因為我們源指向的字符串是不需要改變的,所以我們需要將我們源指向的字符串用const限制,以防它被改變,讓其變得更安全。

    3.為了避免傳進來的地址是空指針,我們需要用assert來斷言傳進來的地址不是空指針。

    4.為了實現鏈式訪問,我們要將傳進來的目標起始地址(destination)返回。由于這個函數在執行的時候會改變destination存儲的內容,所以我們要重新創建一個char*類型的指針來存儲這個地址。

    2.模擬實現

    #include<stdio.h>
    #include<assert.h>
     
    char* my_strcat(char* dest, const char* src)
    {
    	assert(dest && src);//斷言傳進來的地址不是空指針
    	char* ret = dest;//保存目標起始地址
    	while (*dest)//找到'\0'的地址
    	{
    		dest++;
    	}
    	while (*dest++ = *src++)//追加字符串
    	{
    		;
    	}
    	return ret;
    }
    int main()
    {
    	char ch2[4] = "def";
    	char ch3[7] = "abc"; //ch3為目標數組,空間必須比ch2大
    	printf("%s\n", my_strcat(ch3, ch2));//鏈式訪問
    	return 0;
    }

    運行結果

    C語言怎么實現strcpy與strcat函數

    到此,關于“C語言怎么實現strcpy與strcat函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

    向AI問一下細節

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

    AI

    乐安县| 平陆县| 栖霞市| 藁城市| 灌阳县| 定州市| 晋江市| 田东县| 崇左市| 静安区| 巩义市| 杭锦后旗| 灵丘县| 灵璧县| 莱州市| 怀集县| 孙吴县| 黑河市| 泽州县| 永清县| 莆田市| 鹰潭市| 八宿县| 上犹县| 上饶市| 新闻| 汪清县| 麟游县| 宜丰县| 灵台县| 遵义市| 新兴县| 汝州市| 漠河县| 浑源县| 台南县| 日土县| 繁峙县| 静安区| 尖扎县| 左贡县|