1. 程式人生 > >用指標函式將兩個字串拼接

用指標函式將兩個字串拼接

# include <stdio.h>
# include <string.h>

char *str(char *p1, char *p2)
{
char *p = p1; //將目標遺產地址賦給指標變數p;將陣列s1的首地址賦給指標變數p,
while(*p1++); //指標p1移到s1的串尾;當*p的值不是\0時, p就向後位移 直到*p為\0。
p1--; //因為p1現在的位置在\0,所以應向前移一個位置
while(*p1++ = *p2++); //將源串s2中的字元依次複製到目標串s1中; 把s2中的字串複製到s1字串的後面
return p; //返回指向目標串首地址的指標p;返回s1的首地址
}

void main(void)
{
char s1[100] = "ABCD", s2[100] = "EFGH";
printf("拼接後的字串為:");
printf("%s\n", str(s1,s2)); //將字串s2拼搏到字串s1後輸出s1的內容
}
/*程式輸出結果:

---------------

ABCDEFGH 

--------------

*/

程式分析:程式在輸入兩個字串s1,s2後,呼叫返回字元指標值的函式str(),呼叫過程中,先將實參s1 s2傳送給指標變數p1 p2,迴圈語句:while(*p++)將指標p1由字串s1首移到串尾。迴圈語句while(*p1++ = *p2++)將字串s2中的字元依次賦給字串s1。最後return p返回字串s1首地址給主調函式。注意:在呼叫指標型函式時,接收返回值的變數一定是與被呼叫函式資料型別一致的指標,不得使用陣列名接收指標型函式的返回值,因為陣列名是地址常,不能賦值。