c語言任意拼接函數(shù) c語言變量拼接

(c語言)拼接字符

C語言中拼接字符串可以使用strcat函數(shù)。

成都創(chuàng)新互聯(lián)主營中陽網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,重慶App定制開發(fā),中陽h5微信小程序定制開發(fā)搭建,中陽網(wǎng)站營銷推廣歡迎中陽等地區(qū)企業(yè)咨詢

1、strcat()函數(shù) ,即string catenate的縮寫

原型:extern char *strcat(char *dest,char *src);

用法:#include string.h

功能:把src所指字符串添加到dest結(jié)尾處(覆蓋dest結(jié)尾處的'\0')并添加'\0'。

說明:src和dest所指內(nèi)存區(qū)域不可以重疊且dest必須有足夠的空間來容納src的字符串。

返回指向dest的指針。

2、舉例:

#include?stdio.h

#include?string.h

int?main(){

char?d[20]="字符串1";?//第一個字符串

char?*s="?字符串2";??//第二個字符串

strcat(d,s);????//拼接兩個字符串,結(jié)果保存在第一個字符串當中

printf("%s",d);?//輸出拼接結(jié)果:"字符串1字符串2"

getchar();

return?0;

}

C語言實現(xiàn)兩個字符串的拼接

char out[]="";和char out[4];只有數(shù)組大小的區(qū)別。

其實這兩個程序都是有問題的。在使用strcat函數(shù)連接字符串時,必須要保證連接后的目標字符串不發(fā)生“越界”。

char out[]="";相當于char out[1]='\0',

char out[4];用于存放字符串時,最多允許存放3個字符的字符串,否則就會造成“越界”,造成的后果是不能預料的。出現(xiàn)圖一中的情況,可能是還有別的程序語句起了作用的緣故吧。

要正確實現(xiàn)預料的上述程序效果,至少應該設定char out[7];(實際可以適當略大一點)

c語言自定義函數(shù)實現(xiàn)字符串的拼接、拷貝、比較大小、求字符串長度等四個功能

#includestdio.h

void s_trcat(char *s1,char *s2);//連接兩個字符串

void s_trcpy(char *s1,char *s2);//字符串s2復制給字符串s1

int s_trcmp(char *s1,char *s2);//兩個字符串比較大小

int s_trlen(char *s);//計算一個字符串的長度

int main()

{

char s1[11]="12345", s2[11]="ABCDE";

char x1[11]="12345",x2[11]="SSSKK";

char str1[11]="ABCD",str2[11]="ACB";

char s[11]="ABCDEF";

int n,len;

s_trcat(s1,s2);//拼接s1,s2

printf("拼接s1,s2,輸出s1\n");

puts(s1);

s_trcpy(x1,x2);//將x2的內(nèi)容復制給x1

printf("將x2的內(nèi)容復制給x1,輸出x1\n");

puts(x1);

n=s_trcmp(str1,str2);//比較str1與str2大小,返回一個整數(shù),代表比較的結(jié)果

if(n==0)

printf("str1與str2相同\n");

if(n==1)

printf("str1大于str2\n");

if(n==-1)

printf("str1小于str2\n");

len=s_trlen(s);//計算字符串s的長度,并返回一個整數(shù)(字符串長度),

printf("字符串s的長度:%d\n",len);

}

void s_trcat(char *s1,char *s2)//連接兩個字符串

{

char *p=s1;

char *q=s2;

while(*p)

p++;

while(*q)

{

*p=*q;

p++;

q++;

}

*p='\0';//給新字符串尾部加個結(jié)束符

}

void s_trcpy(char *s1,char *s2)//字符串s2復制給字符串s1

{

char *p=s1;

char *q=s2;

while(*p++=*q++);

*p='\0';//給新字符串尾部加個結(jié)束符

}

int s_trcmp(char *s1,char *s2)//兩個字符串比較大小

{

char *p=s1;

char *q=s2;

int len1=0,len2=0;

while(*p++)

len1++;

while(*q++)

len2++;

p=s1,q=s2;

while(*p!='\0'*q!='\0')

{

if(*p*q)

return 1;

if(*p*q)

return -1;

p++;

q++;

}

if(len1==len2)

return 0;//返回0,兩個字符串相同

if(len1len2)

return 1;//返回1,前大于后

if(len1len2)

return -1;//返回-1,前小于后

}

int s_trlen(char *s)//計算一個字符串的長度

{

char *p=s;

int len=0;

while(*p++)

len++;

return len;//返回字符串長度

}

C語言中字符串拼接函數(shù)問題

不是說一定不行,也有可能可以。像你這種定義就有可能可以,因為如果s1,s2 在分配內(nèi)存時就是連續(xù)的,那么就是越界了,你這條打印出來也會對,因為他沒有越界到別的地方,都是字符串空間,你要同時把s2也打印出來,看看s2有沒有被改變。c并不檢測越界,只有在動行時有可能會出現(xiàn)執(zhí)行錯誤。

分享題目:c語言任意拼接函數(shù) c語言變量拼接
URL標題:http://bm7419.com/article46/ddepeeg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、網(wǎng)站制作、建站公司、網(wǎng)站策劃、品牌網(wǎng)站建設、服務器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站