当前位置:首页 » 编程语言 » c语言两个字符串合并

c语言两个字符串合并

发布时间: 2022-09-09 23:43:43

c语言 字符串合并

////////// 如果通过一个地址返回呢?该怎么处理啊?
#include<stdio.h>
#include<string.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; i<M; 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 时, 一定要确保, 目标内存的大小有足够的空间存放合并后的字符串.
// 如果空间太小, 就会出现内存溢出.

#include<stdio.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;
}

㈡ 从键盘上输入两个字符串并合并成一个字符串中c语言

#include"stdio.h"
#include"string.h"
void
main()
{
char
a[100],b[100];
int
i,n,m,k;
printf("请输入第一个字符串(a):");
gets(a);
n=strlen(a);
printf("在输入要插入的字符串(b):");
gets(b);
m=strlen(b);
printf("请输入要插入的位置(k不能超出字符串a的长度):");
scanf("%d",&k);
for(i=k-1;i<m+n;i++)
{
a[i+k]=a[i];
}
a[i+k]='\n';
for(i=0;i<m;i++)
a[i+k-1]=b[i];
puts(a);
printf("\n");
}

㈢ C语言中,合并两个字符串为一个新的字符串,确保在新字符串中,两个字符串的所有字符仅出现一次

#include<stdio.h>
#include <string.h>
int main(){
char s1[]="happy";
char s2[]="NewYear";
char s3[999];
int i,j,c,m=0;
s3[m]=s1[0];m++;
for (j=1;s1[j]!='\0';j++){
c=0;
for (i=0;i<m;i++) if (s3[i]==s1[j]) {c=1;break;};
if (c==0) {s3[m]=s1[j];m++;};
}
for (j=0;s2[j]!='\0';j++){
c=0;
for (i=0;i<m;i++) if (s3[i]==s2[j]) {c=1;break;};
if (c==0) {s3[m]=s2[j];m++;};
}
s3[m]='\0';
printf ("%s",s3);
return 0;
}
输出: hapyNewYr
----
单个字符比较 用: if (s3[i]==s1[j]) 则相同;else 则不同;

㈣ C语言怎么合并两个字符串

代码:

char str1="123";

char str2="abc";

strcat(str1,str2);

printf("%s",str1);

例如:

#include <stdio.h>

#include <string.h>

main()

{

char strDes[N]= "kkkjdah", strSor[N]="sdasdaaa";

strcat(strSor,strDes);//链接

puts(strDes);

puts(strSor);

}

(4)c语言两个字符串合并扩展阅读:

字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s[0]=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。

通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。

㈤ C语言如何合并两个字符串,不用库里的函数

因为char *b = "123"";所指向的空间,是“常量区”,其中的内容是不允许改写的。

所以,char *a = "DCY666"";要改成char a[20] = "DCY666"";字符数组并预留空间,可以增加字符串的内容。

㈥ 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;
}

请采纳,谢谢!

㈦ c语言如何合并两个字符串

如果是C语言,有一个函数是strcat

在函数库string.h,功能就是合并字符串

例如:

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

chara[10]={"12"};
charb[10]={"bc"};

intmain()
{
strcat(a,b);
printf("%s ",a);
return0;
}

㈧ c语言字符串提取与合成问题

按要求,将原字符串拆分成两个字符串分别单独保存。

思路:

一、两个指针分别指向数组第一项和第二项,对应偶数项和奇数项,之后指针同时循环+2取值保存在对应数组。

二、拼接字符串直接使用字符串函数strcat。(不想使用库函数,也可循环赋值)。

#include <stdio.h>

#include <string.h>

#define M 20 //数组最大长度

int splitStr(char str[],char oStr[],char eStr[]);//拆分str到oStr和eStr

int main()

{

char str[M+1],oStr[M+1],eStr[M+1];//str为原字符串,oStr为奇数字符串,eStr为偶数字符串

printf("请输入一个字符串(最大%d个字符):",M);

scanf("%s",str);

splitStr(str,oStr,eStr);

printf("其中奇数项组成的字符串为:%s ",oStr);

printf("其中偶数项组成的字符串为:%s ",eStr);

strcat(eStr,oStr);//将偶数组和奇数组组合后放在偶数组中

printf("将偶数组和奇数组组合后新数组为%s ",eStr);

return 0;

}

int splitStr(char str[],char oStr[],char eStr[])

{

int i=0,j=0;

char *op=str+1,*ep=str;//op指向奇数项,ep指向偶数项,循环+2取值

while(1)

{

if(*ep==0) break;

if(*ep) eStr[i++]=*ep;

if(*ep && *op) oStr[j++]=*op;

if(*op==0) break;

ep+=2,op+=2;

}

eStr[i]=0,oStr[j]=0;

return 1;

}

热点内容
win7的缓存文件夹 发布:2025-01-12 23:32:12 浏览:954
安卓哪个文件锁好 发布:2025-01-12 23:31:23 浏览:325
怎么让安卓用苹果耳机有弹窗 发布:2025-01-12 23:30:34 浏览:958
oracle存储过程有返回值 发布:2025-01-12 23:30:34 浏览:7
用友服务器怎样同步ip 发布:2025-01-12 23:29:52 浏览:979
qt编译vlcqt库 发布:2025-01-12 23:24:45 浏览:244
攻击linux服务器 发布:2025-01-12 23:17:01 浏览:6
天籁哪个配置亲民 发布:2025-01-12 23:16:26 浏览:482
零售通交易密码是什么 发布:2025-01-12 23:13:02 浏览:319
监控器压缩 发布:2025-01-12 22:51:29 浏览:248