先加头文件#includestring.h
10年积累的网站制作、成都网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有江北免费网站建设让你可以放心的选择与我们合作。
char a[10]="123";
char b[10]="abc";
strcat(a,b); //连接两个字符串,连接后的字符串存放在a中,数组a中有足够空间
printf("%s",a); //输出连接后的字符串
或:
#includestring.h
char a[10]="123";
char b[10]="abc";
char c[20];
strcpy(c,a); //把串a复制到有足够空间的c中
strcat(c,b); //把b连接到c的串尾
#include stdio.h
#include string.h
void catstring(char *str0, int len0, char *str1, int len1, char *str2, int len2)
{
if (len2 = len0 + len1) {
return;
}
memcpy(str2, str0, len0);
memcpy(str2 + len0, str1, len1);
}
int main()
{
char str0[20] = "Golden";
char str1[20] = "View";
char str2[20] = { 0 };
catstring(str0, strlen(str0), str1, strlen(str1), str2, 20);
printf("str2 = %s\n", str2);
return 0;
}
请采纳,谢谢!
主要有两种方法,一个是字符串连接操作strcat,另一个是格式化输出sprintf,主要代码如下,
//程序功能实现字符串合并
#include stdio.h
#include string.h
int main(int argc, char *argv[])
{
char name1[32]="456",name2[32]="123",name3[32]="789";
char NAME1[256]={'\0'},NAME2[256]={'\0'};
//字符串连接函数
strcat( NAME1,name2);
strcat( NAME1,name1);
strcat( NAME1,name3);
//格式化输出
sprintf(NAME2,"%s%s%s", name2, name1, name3);
printf("%s\n",NAME1);
printf("%s\n",NAME2);
return 0;
}
char *strcat( char *str1, const char *str2 );函数将字符串str2
连接到str1的末端,并返回指针str1。
int sprintf( char *buffer, const char *format, ... );sprintf和printf类似,
只是把输出发送到buffer缓冲区中,返回值是写入的字符数量。
#include stdio.h
#include string.h
main()
{
char strDes[N]= "kkkjdah", strSor[N]="sdasdaaa";
strcat(strSor,strDes);//链接
puts(strDes);
puts(strSor);
}
////////// 如果通过一个地址返回呢?该怎么处理啊?
#includestdio.h
#includestring.h
#define M 3
#define N 30
void fun(char a[M][N], char *b)
{
for (int i = 0; i M; ++ i ){
strcat( b, a[i]); // 这样子使用.
}
}
int main(int argc, char ** argv )
{
char w[M][N]={"AAAA","BBBBBBB","CC"}, a[100];
int i ;
printf("The string: \n");
for(i=0; iM; i++){
printf("w[%d] = [%20s] \n", i, w[i]);
}
printf("\n");
//bzero(a, sizeof(a));
memset(a,0, sizeof(a));
fun(w,a);
printf("The A string: --------- \n");
printf("a = [%30s]\n",a);
return 0;
}
////////////////////////////// 为什么结果出现错误 无法运行??
// 因为 b 没有给它申请内存, 是个未定义的指针. 肯定会出错.
// 用 strcat 时, 一定要确保, 目标内存的大小有足够的空间存放合并后的字符串.
// 如果空间太小, 就会出现内存溢出.
#includestdio.h
#include string.h
int main( int argc, char ** argv )
{
char *b = NULL;
char a[3][20]={"AAAA","BBBBBBB","CC"};
int len = strlen(a[0]) + strlen(a[1]) + strlen(a[2]) + 1 ; //目标字符串长度.
b = (char *)malloc( len ) ;
memset(b, 0, len); // 清0 ;
strcat(b,a[0]);
strcat(b,a[1]);
strcat(b,a[2]);
printf("%s",b);
free(b); // 要记得 free 哦.
b = NULL;
return 0;
}
做如下几个方面的修改:
1:声明的STK和定义的保持一致
2:STK中返回的是局部数组变量,这样是不能返回到主函数的
3:字符串的末尾需要加'\0'。
#include stdio.h
#include string.h
char* Stk(char*, char*, char*);//声明合并字符串函数
int main()
{
char string1[20],string2[10], string3[30];
gets(string1);
gets(string2);
puts(Stk(string1,string2, string3));
return 0;
}
char* Stk(char str1[],char str2[], char str3[])
{
int i,j,k,a,b;
a=strlen(str1),b=strlen(str2);
j=0,k=0;
i=strlen(str1)+strlen(str2);
for(i=0;i=a;i++)
{
str3[i]=str1[j];
j++;
}
for(i=a;i=(a+b);i++)
{
str3[i]=str2[k];
k++;
}
str3[a+b]='\0';///////
return str3;
}