C语言 在知道两段字符串的情况下截取中间的字符串 50
比如"aaa_sdfg_sss"要把中间的sdfg取出BYTEFindSubText(LPCSTRFullText,LPCSTRFrontText,LPCSTRBackT...
比如"aaa_sdfg_sss"
要把中间的sdfg取出
BYTE FindSubText(LPCSTR FullText, LPCSTR FrontText, LPCSTR BackText, LPSTR SubText)
{
if(!(*FrontText) || !(*BackText))
{
return 0;
}
LPSTR SubTextEnd = strstr(FullText, BackText);
LPSTR SubTextSet = strstr(FullText, FrontText);
if(!SubTextEnd || !SubTextSet || SubTextEnd <= SubTextSet)
{
return 0;
}
DWORD I;
for(I=0;I<(SubTextEnd - SubTextSet - strlen(FrontText));I++)
{
SubText[I] = SubTextSet[I + strlen(FrontText)];
}
SubText[I] = 0x00;
return 1;
}
自己解决了 展开
要把中间的sdfg取出
BYTE FindSubText(LPCSTR FullText, LPCSTR FrontText, LPCSTR BackText, LPSTR SubText)
{
if(!(*FrontText) || !(*BackText))
{
return 0;
}
LPSTR SubTextEnd = strstr(FullText, BackText);
LPSTR SubTextSet = strstr(FullText, FrontText);
if(!SubTextEnd || !SubTextSet || SubTextEnd <= SubTextSet)
{
return 0;
}
DWORD I;
for(I=0;I<(SubTextEnd - SubTextSet - strlen(FrontText));I++)
{
SubText[I] = SubTextSet[I + strlen(FrontText)];
}
SubText[I] = 0x00;
return 1;
}
自己解决了 展开
2016-03-04 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
先用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;
}
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;
}
展开全部
#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;
}
更多追问追答
追问
输入4个参数,分别是总文本,前面的文本,后面的文本,接收结果的缓存区
追答
#include <stdio.h>
#include <string.h>
char *picked(char total[], char left[], char right[],char *buffer) {
int i = 0,j = 0,flag = 0;
int len = strlen(total) - strlen(left) - strlen(right);
for(i = strlen(left),j = 0; j < len; ++i,++j)
buffer[j] = total[i];
buffer[j] = 0;
return buffer;
}
int main() {
char s[] = "aaa_sdfg_sss";
char t[10],separator = '_';
printf("源串:%s\n",s);
printf("截取的结果:%s\n",picked(s,"aaa_","_sss",t));
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.调用数据库函数,查c函数库
2.string s1,s2,s3;其中s1为总字符串,s2.s3也已知
char a[100]=s1手机不好写代码,就不写完了,利用下标记录成一个新字符串
3.迭代器,find();
if
2.string s1,s2,s3;其中s1为总字符串,s2.s3也已知
char a[100]=s1手机不好写代码,就不写完了,利用下标记录成一个新字符串
3.迭代器,find();
if
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
//////////////////////////////////////////////////////////////////////////////////////////////////
修改后的程序:
#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';
}
修改后的程序:
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询