比如"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;
}
自己解决了
输入4个参数,分别是总文本,前面的文本,后面的文本,接收结果的缓存区
追答#include <stdio.h>要截取"a_" 和 "_s" 中间的字符串就不行了
追答#include <stdio.h>输入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");
}