c语言合并两个字符串(c语言字符串提取与合成问题)

本文目录
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\n“,oStr);
printf(“其中偶数项组成的字符串为:%s\n“,eStr);
strcat(eStr,oStr);//将偶数组和奇数组组合后放在偶数组中
printf(“将偶数组和奇数组组合后新数组为%s\n“,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;
}
C语言如何合并两个字符串,不用库里的函数
因为char *b = “123\““;所指向的空间,是“常量区”,其中的内容是不允许改写的。
所以,char *a = “DCY666\““;要改成char a = “DCY666\““;字符数组并预留空间,可以增加字符串的内容。
C语言中如何将两个字符串加在一起
可以使用string.h头文件中的strcat函数 char *a=“123“; char *b = “abc“; strcat(a,b)即可,更多的字符串操作可以看一下string.h头文件中 有好多封好的, 如果不想用的话就可以自己写一个函数
函数内容:1.获取两个字符串的总长度,如total_len=len1+len2然后申请一个动态的数组大小为total_len 然后把字符串中的内容依次放进去就可以了。
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);
}
扩展资料:
字符串在存储上类似字符数组,它每一位单个元素都是能提取的,字符串的零位是它的长度,如s=10,这提供给我们很多方便,例如高精度运算时每一位都能转化为数字存入数组。
通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。设p、q是两个串,求q在p中首次出现的位置的运算叫做模式匹配。串的两种最基本的存储方式是顺序存储方式和链接存储方式。
参考资料来源:百度百科-字符串
从键盘上输入两个字符串并合并成一个字符串中c语言
#include“stdio.h“
#include“string.h“
void
main()
{
char
a,b;
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“);
}

更多文章:
issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)
2026年10月15日 10:30
begin和start的区别(start与begin的区别)
2026年10月15日 09:20
vant官网中文(范特365 是韩国化妆品VANT36.5吗)
2026年10月15日 09:10
prison break(越狱(prison break)到底是在讲个什么)
2026年10月15日 06:50
c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)
2026年10月15日 06:40
十六进制转二进制表(16进制转为2进制、8进制、10进制的公式)
2026年10月15日 06:10





