當前位置:首頁 » 編程語言 » c語言實現拼接函數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言實現拼接函數

發布時間: 2022-12-31 04:00:22

1. c語言中字元串拼接函數問題

不是說一定不行,也有可能可以。像你這種定義就有可能可以,因為如果s1,s2 在分配內存時就是連續的,那麼就是越界了,你這條列印出來也會對,因為他沒有越界到別的地方,都是字元串空間,你要同時把s2也列印出來,看看s2有沒有被改變。c並不檢測越界,只有在動行時有可能會出現執行錯誤。

2. C語言指針拼接函數問題,求教大神

strcat(p1+2,p2+1)
p1+2,也就是p1向後移動兩個字元位置的指針作為一個字元串的起始指針,即字元串為"cd"
p2+1,也就是p2向後移動一個字元位置的指針作為一個字元串的起始指針,即字元串為"BCD"
該函數調用將p1+2作為目的串,p2+1作為源串,將後者連接到前者的後面,則連接後為"cdBCD"。
strcpy(str+2, .....)
該函數調用將 後面的串"cdBCD"復制到前者str+2,即"z"的位置,這是一種覆蓋復制。則'z'被'c'覆蓋(原來前面的"xy"保留了下來),後面接著放了"cBCD";
最後輸出的是str,也就是從str的最開始輸出,故結果為"xycdBCD"

3. c語言自定義函數實現字元串的拼接、拷貝、比較大小、求字元串長度等四個功能

#include<stdio.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 ");

puts(s1);

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

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

puts(x1);

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

if(n==0)

printf("str1與str2相同 ");

if(n==1)

printf("str1大於str2 ");

if(n==-1)

printf("str1小於str2 ");

len=s_trlen(s);//計算字元串s的長度,並返回一個整數(字元串長度),

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

}

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

{

char *p=s1;

char *q=s2;

while(*p)

p++;

while(*q)

{

*p=*q;

p++;

q++;

}

*p='';//給新字元串尾部加個結束符

}

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

{

char *p=s1;

char *q=s2;

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

*p='';//給新字元串尾部加個結束符

}

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!=''&&*q!='')

{

if(*p>*q)

return 1;

if(*p<*q)

return -1;

p++;

q++;

}

if(len1==len2)

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

if(len1>len2)

return 1;//返回1,前大於後

if(len1<len2)

return -1;//返回-1,前小於後

}

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

{

char *p=s;

int len=0;

while(*p++)

len++;

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

}

4. C語言中怎樣設計一個函數實現兩個字元串的連接

char
*
strcat(char
*s,
const
char
*append)
{
//將s所指向的字元串的首地址保存下來,以便使用
char
*save
=
s;
//將s所指向的字元串的首指針移至串尾處,s指針指向的字元元素為'\0'
for
(;
*s;
++s);
//將append所指的字元串的元素復制到s所指向的字元串尾部,直至遇到'\0'
while
((*s++
=
*append++)
!=
'\0');
//返回追加後的字元串首地址
return(save);
}

5. C語言實現兩個字元串的拼接

for(;*s!='\0';s++) *s=*s;-->為什麼一定要有這一句? 不是非要這句,而是要上面一句for(;*s!='\0';s++);這是將本函數中s的地址移到源s(主函數中)的末尾(是結束符的地方)。 這樣才能在後面拼接t。 沒有*s=*s只要有分號就可以。

6. C語言中怎樣設計一個函數實現兩個字元串的連接

1)簡單來,直接用 strcat 函數,需要包含頭文件 string.h

2)自己實現的話也不麻煩,但是要考慮一些細節:
假設兩個字元串指針為 str1,str2 ,現在要講 str1 和 str2 連接成一個新的字元串。
a.考慮指針 str1,str2 是否非空
b.如果將str2的內容直接連接到str1的末尾,要考慮str1是否有足夠的剩餘空間來放置連接上的str2的內容。
如果用一個新的內存空間來保存str1和str2的連接結果,需要動態分配內存空間。

7. C語言中自建字元串拼接函數,結果錯誤!!求指教

你自己寫的strcat函數在第一次while中一直p++到了''的後一位(因為p++是先賦值再加1),所有在printf的時候遇到''就停止列印了,後邊的字元串就顯示不出來了。應該在第一個while下邊寫一個p--;讓p指針指向''

8. 用C語言編程:編寫一個函數,將兩個字元串連接起來

1、新建一個工程和.c文件,輸入頭文件和主函數。

9. 用C語言:寫一個函數,將兩個字元串連接

字元串連接:即將字元串b復制到另一個字元a的末尾,並且字元串a需要有足夠的空間容納字元串a和字元串b。

#include<stdio.h>
voidmystrcat(chara[],charb[]){//把a和b拼接起來
inti=0,j=0;
while(a[i++]!='');
i--;
while(b[j]!=''){
a[i++]=b[j++];
}
a[i]='';
}
intmain()
{
chara[100],b[100];
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
return0;
}
/*
運行結果:
abc
def
abcdef
*/

10. 用C語言寫一個函數,將兩個字元串連接。

1、實際上就是實現strcat這個字元串庫函數,在vc自帶的crt源碼或者linux平台的glibc庫中都有strcat的源碼,自己可以查閱參考,看看庫開發者是如何寫代碼的,對於學習C語言非常有用。
2、示例
#include <stdio.h>

char *strcat(char *str1, char *str2)
{
if((str1==NULL)||(str2==NULL)) throw "Invalide arguments!";
char *pt = str1;
while(*str1!='\0') str1++;
while(*str2!='\0') *str1++ = *str2++;
*str1 = '\0';
return pt;
}

int main()
{
char a[]= "markyuan";
char b[]= "yyyyy";
char *cat = strcat(a,b);
printf("%s\n",cat);
return 0;
}