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='