问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 在知道两段字符串的情况下截取中间的字符串

发布网友 发布时间:2022-05-12 14:52

我来回答

4个回答

热心网友 时间:2023-10-11 00:34

先用strcat拼接好两个子串,然后再用left方式截取。
C语言中拼接字符串可以使用strcat函数。
1、strcat()函数 ,即string catenate的缩写
原型:extern char *strcat(char *dest,char *src);
用法:#include <string.h>
功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
返回指向dest的指针。
2、举例:

#include <stdio.h>
#include <string.h>
int main(){
char d[20]="字符串1"; //第一个字符串
char *s=" 字符串2"; //第二个字符串
strcat(d,s); //拼接两个字符串,结果保存在第一个字符串当中
printf("%s",d); //输出拼接结果:"字符串1字符串2"
getchar();
return 0;
}
3、c语言截取字符串方法:

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

/*从字符串的左边截取n个字符*/
char * left(char *dst,char *src, int n)
{
char *p = src;
char *q = dst;
int len = strlen(src);
if(n>len) n = len;
/*p += (len-n);*/ /*从右边第n个字符开始*/
while(n--) *(q++) = *(p++);
*(q++)='\0'; /*有必要吗?很有必要*/
return dst;
}

热心网友 时间:2023-10-11 00:35

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

char *picked(char str1[], char str2[], char separator) {
int i = 0,j = 0,flag = 0;
str2[0] = 0;
while(str1[i]) {
if(str1[i] == separator) {
flag = 1;
while(str1[i] == separator && str1[i]) ++i;
}
if(flag && str1[i]) {
while(str1[i] && str1[i] != separator)
str2[j++] = str1[i++];
str2[j] = 0;
return str2;
}
++i;
}
return str2;
}

int main() {
char s[] = "aaa_sdfg_sss";
char t[10],separator = '_';
printf("原串:%s\n",s);
printf("截取的结果:%s\n",picked(s,t,separator));
return 0;
}

热心网友 时间:2023-10-11 00:35

1.调用数据库函数,查c函数库
2.string s1,s2,s3;其中s1为总字符串,s2.s3也已知
char a[100]=s1手机不好写代码,就不写完了,利用下标记录成一个新字符串
3.迭代器,find();

if

热心网友 时间:2023-10-11 00:36

//////////////////////////////////////////////////////////////////////////////////////////////////
修改后的程序:
#include <stdio.h>
#include "string.h"
void substr(char str[], char front[], char rear[], char *pBuffer);
void main()
{
char str[30]="aaa_sdfg_sss";//初始化
char buffer[30];//缓存区
char * pBuffer = buffer;//要想在其它函数中修改主函数中的值,必须定义指针来实现;
int i = 0;
substr("aaa_sdfg_sss", "aaa_","_sss",pBuffer);
// substr("aaa_sdfg_sss", "aa","ss",pBuffer);

while (buffer[i] != '\0')
{
printf("%c",buffer[i]);
i++;
}
printf("\n");
}
void substr(char str[], char front[], char rear[], char * pBuffer)
{

int lstr ,lfront ,lrear;
int i = 0;
char * p = str;

lstr = strlen(str);
lfront = strlen(front);
lrear = strlen(rear);

for (p = str + lfront ; p < str +lstr -lrear ; p++)
pBuffer[i++] = *p;
pBuffer[i] = '\0';
}追问输入4个参数,分别是总文本,前面的文本,后面的文本,接收结果的缓存区

追答substr("aaa_sdfg_sss", "aaa_","_sss",pBuffer);
这个函数的四个参数:“aaa_sdfg_sss”是总文本
“aaa_”是前面的文本
“_sss”是后面的文本
pBuffer是指向缓存区的指针
void substr(char str[], char front[], char rear[], char * pBuffer)
str:总文本
front: 前面的文本,可以是总文本前部分的任意长度字符串
rear: 后面的文本,可以是总文本后部分的任意长度字符串
pBuffer:指向缓存区的指针,用来操作缓存区
没问题吧,你看看程序,运行注释的语句看看,理解一下。

和之前写的程序对比一下,理解实现的方法有何不同。
include

void substr(char * pstr, int m, int len);
void main()
{
char str[30]="aaa_sdfg_sss";//也可以通过函数输入,这里为了说明问题操作方法,直接初始化了
char * p = str;
int m,len;
printf("取子串的其实位置m,取子串长度len\n");
//scanf("%d%d",&m,&len);
//printf("其实位置%d,取子串长度%d",m,len);
substr(p, 4,4);
}
void substr(char * pstr, int m, int len)
{
char * p = pstr;
int k = 0;
char s[30];
for(p = pstr + m; p < pstr +m +len ; p++)
s[k++] = *p;
s[k] = '\0';
k=0;
while (s[k] != '\0')
{ printf("%c",s[k]);
k++;
}
printf("\n");
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
找几本一流的小说。类型' 完结什么的无所谓. 不要幼稚就好 沈阳职高学校排名 沈阳哪个公办职高和中专好 沈阳有哪些职高学校比较好? gpw一代和二代的区别有哪些 罗技gpw一代和二代区别介绍 第一代和第二代的区别 gpw二代和一代有什么区别 二代和一代区别详情分享 设张举措的意思设张举措的解释设张举措接龙 设张的成语设张的成语是什么 人字地砖铺法怎么找平方 大鲜虾跟豆腐能红烧吗 okbear养生壶是什么牌子 孕36天hcg值多少正常值 月经紊乱HCG值会达36吗 停经37天,HCG才36,孕酮大于60,雌二醇大于1000 移植十四天hcg值36有可能宫外孕吗 hcg36天2856iu/l正常吗 清宫一个月后查hcg36,隔一天查是5,是医院搞错了吗? 孕30天Hcg36如果不翻倍就是宫外孕吗? hcg36小时翻倍算正常吗 试纸试到阳性,HCG检查只有36有没有怀孕 试管婴儿14天hcg值36是怀孕了吗?我现在特别焦急的等待结果。 hcg36,可以判断出受孕有几天了么 测血HcG36是怎回事 全国软考 网络工程师 一年考几次 电脑上智慧社区平台客户端一登陆就秒退,但显示后台运行是什么原因 软考一次可以考几科? 江苏智慧人社灵活就业缴费显示不在允许执行时间段 什么部门为智慧工地各信息系统正常运行提供保障 微信公众号历史消息搜索关键字怎么搜索不到? c 字符串截取 30分钻石戒指价格 手机充电怎么越充越少 送男友是白草莓好还是红草莓好? 挑草莓时应该选什么样的草莓比较好,颜色越鲜艳的越好吗? 红草莓黑草莓白草莓哪个更好吃 共享之人,就在身侧是什么诗 一同分享 在古文中怎么说 西递和宏村那个好玩呀? 2017浙江财经大学三位一体综合分83.6是什么水平啊? 共享之人就在身侧是什么意思 如何理解有“共同之处和共享之处的友谊”? 作文,让共享之花绽放 关于 局域网 打印机共享之问题 怎么看待共享之家的养老社区? 浙江省2014年三位一体学校有哪些 局域网共享之密码问题 深圳的共享之家养老机构设施齐全吗?服务怎么样? 负一屏怎么打开? 韩国综艺共享之家怎么不更新了?