哈哈!人的野心總是不能滿足!之前上資料結構,老師叫我們做三個字串串接,是用迴圈做的。我剛好有讀到關於指標陣列的東西,所以改用指標陣列來做。 過程十分順利,之後我又有更大的企圖心,如果要串接的字串數量是可以變化要怎做?就像printf那樣,所以我就去查資料啦!是利用到Stdarg.h中的,提供使用不定參數的函式,看完資料後就迅速完成,但這之中,我又耍笨了!一直以為我做錯,還跑去知識加發問。後面才發現是誤會一場,哈!完成的原始碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
void cat(int amont,char [],...);
int main(void)
{
char strA[256];
char strB[256];
char strC[256];
char strD[256];
scanf("%s %s %s",strA,strB,strC);
cat(3,strD,strA,strB,strC);
printf("%s\n",strD);
system("PAUSE");
return 0;
}
void cat(int amount,char dest[],...)
{
char *ptr[amount];
va_list argptr;
va_start(argptr,amount);
int i,counter=0;
for (i=0;i<amount;i++)
{
ptr[i]=va_arg(argptr,char *);
while (*ptr[i]!='\0')
dest[counter++]=*(ptr[i]++);
}
dest[counter]='\0';
va_end(argptr);
}
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
void cat(int amont,char [],...);
int main(void)
{
char strA[256];
char strB[256];
char strC[256];
char strD[256];
scanf("%s %s %s",strA,strB,strC);
cat(3,strD,strA,strB,strC);
printf("%s\n",strD);
system("PAUSE");
return 0;
}
void cat(int amount,char dest[],...)
{
char *ptr[amount];
va_list argptr;
va_start(argptr,amount);
int i,counter=0;
for (i=0;i<amount;i++)
{
ptr[i]=va_arg(argptr,char *);
while (*ptr[i]!='\0')
dest[counter++]=*(ptr[i]++);
}
dest[counter]='\0';
va_end(argptr);
}
