代码文本:
#include "stdio.h"
int input(int *p,int n){
char i,ch
for(i=0i<ni++){
if((ch=getchar())=='\n')
break
else if(ch>='0' &&ch<='9')
ungetc(ch,stdin)
scanf("%d",p+i)
}
return i
}
int main(int argc,char *argv[]){
int a[21],b[10],i,j,k
printf("Input array a...\n")
i=input(a,10)
printf("and input array b...\n")
j=input(b,10)
for(k=0k<ja[i++]=b[k++])
for(j=0j<iprintf("%d ",a[j++]))
putchar('\n')
return 0
}
int main() {char a[] = "123456"
char b[] = "abcde"
int buflen = strlen(a) + strlen(b)
char *p = (char*)malloc(buflen + 1)
memset(p, 0, buflen)
printf("%d\n", buflen)
strcpy(p, a)
strcat(p, b)
printf("%s\n", p)
free(p)
}
C的数组在创建后不可变得,因此数组合并的思想就是把数组塞到一个足够大的空间里形成新数组。
上面的函数是比较简单的合并方法
两个错误,三个地方
#include<stdio.h>#include<string.h>
void main(){
int a, b,f, gchar c[50], d[50], e[100]
gets(c)
for(a=0c[a]!='\0'a++)//原来的是c[a]=!'\0'
{
e[a]=c[a]
}
gets(d)
g=strlen(d)
if(g>5)
{
for(b=0b<4b++)//原来的b是1~5
{e[a+b]=d[b]}
}
else{
for(b=0b<gb++)//原来的b是1~g
{e[a+b]=d[b]}
}
for(f=0f<a+bf++)
printf("%c", e[f])
}