用法:
十余年的湘潭網站建設經驗,針對設計、前端、開發(fā)、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。網絡營銷推廣的優(yōu)勢是能夠根據用戶設備顯示端的尺寸不同,自動調整湘潭建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優(yōu)雅布局與設計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“湘潭網站設計”,“湘潭網站推廣”以來,每個客戶項目都認真落實執(zhí)行。
#include string.h
在C++中,則存在于cstring頭文件中。
strcat原型:
extern char *strcat(char *dest,char *src);
功能:
把src所指字符串添加到dest結尾處(覆蓋dest結尾處的'\0')并添加'\0'。
說明:
src和dest所指內存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
strcat()函數從名稱來講就是索的含義,用途:在一個字符串的末尾增加新的字符。
函數定義如下:
char *strcat(char *dest, const char *src);
擴展資料
代碼實現如下:
char *strcat(char *dest, const char *src)
{
char *tmp = dest;
while (*dest)
dest++;
while ((*dest++ = *src++) != '\0');
return tmp;
}
實現原理:
首先dest地址移動到最后一位,然后增加src參數值遇到’\0’結束拷貝。
strcat()也存在著與strcpy()類似的問題。
1、首先打開vs2014,新建一個項目。
2、添加頭文件。
3、添加main主函數。
4、定義一個函數addTwoNumbers。
5、在main函數定義a,b,sum。
6、聲明函數指針ptr_sum。
7、將addTwoNumbers函數地址賦值給ptr_sum。
8、運行程序,看看結果。
總的來說,關于strcat,第一個參數所指向的內存地址要求是可寫的
那么,關于你提出的,s1 = "abc"這句話的實際作用是把常量區(qū)中"abc"的首地址賦值給s1,而常量區(qū)的內存是不允許程序修改的,因此執(zhí)行strcat的時候就會失敗。
而改成s1[],這是作為一個棧內數組,生存空間僅在函數生命周期內,并且在該函數生命周期中,該內存地址是可讀可寫的,所以改變之后可以成功。
同樣,如果將你的代碼修改成以下形式,也可以成功
char *s1 = (char *)malloc(6 * sizeof(char));
strcpy(s1, "abc");
strcat(s1, "def");
puts(s1);
free(s1);
這樣子也是可以成功的,malloc分配的內存在堆上,是用戶自己管理的內存區(qū)域,也是可讀可寫的區(qū)域。
strcat函數作用是把src所指向的字符串(包括“\0”)復制到dest所指向的字符串后面(刪除*dest原來末尾的“\0”)。保證*dest足夠長,以容納被復制進來的*src。*src中原有的字符不變。
strcat是把兩個字符串合并到一起,比如
str1[30] = "Hello";
str2[] = " China";
strcat(str1, str2);
則str1的內容就變成"Hello China"。
擴展資料:
在C中,函數原型存在 string.h頭文件中。
在C++中,則存在于cstring頭文件中。
把src所指向的字符串(包括“\0”)復制到dest所指向的字符串后面(刪除*dest原來末尾的“\0”)。要保證*dest足夠長,以容納被復制進來的*src。*src中原有的字符不變。返回指向dest的指針。
src和dest所指內存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。
參考資料來源:百度百科-strcat
strcat()是追加字符串的函數。
strcat(char[] a,char []b)即將第二個字符串追加到第一個字符串末尾,第二個字符串值不變,第一個變長。
你的理解是對的 但是使用有誤!追加時需要保證第一個字符串在加上第二個之后依舊不能溢出。在此題中,你的a[]字符串長度在追加上".txt"之后,會溢出,建議在定義a的時候寫上char a[100]保證不溢出。
1
2
3
char a[100];
scanf("%s",a);
strcat(a,".txt");
strcat()函數執(zhí)行是把字符串b連接到字符串a的后邊,也就要求字符串a要足夠長,能裝下b,而你這樣定義的字符串a和b都是字符串字面量,也叫著字符串常亮,很明顯前邊字符串長度是固定的4字節(jié),不僅不夠增加后邊字符串長度而且還是不可修改的,所以運行一定出錯,要是在linux下運行將產生一個段錯誤。修改可以把a定義成這個樣子:char
a[10]
=
"tom";