indexof() :在字符串中从前向后定位字符和字符串;所有的返回值都是指在字符串的绝对位置,如为空则为- 1
成都创新互联公司基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
string content="as#fjs#fjgkfasdsfsgfhgjgfjgdddd";
content.indexof('#') =2 //从前向后 定位 # 第一次出现的位置
content.indexof('#',1) =2 //从前向后 定位 # 从第三个字符串 第一次出现的位置
test.indexof('#',5,2) =6 //从前向后 定位 # 从第5 位开始查,查2位,即 从第5位到第7位;
lastindexof() :在字符串中从后向前定位字符和字符串;、
用法和 indexof() 完全相同。
判断的话直接这么写就好了:
if(content.indexof('#') != -1)
{};
else{};
unsigned int slen(const char *a)
{
unsigned int i=0;
while (a[i])
++i;
return i;
}
int Instr(const char *a,const char *b)
{
int j,i,lena=slen(a),lenb=slen(b);
if (lenalenb) return 0;
for (i = 0; i=lena-lenb; i++) {
for (j=0; jlenb; j++) {
if (b[j]!=a[i+j]) break;
}
if (j=lenb) {
return i;
}
}
return -1;
}
标个记号准备上传对大神的源码分析。好了,我分析了上楼大神的代码实现,具体参考他的代码,分享下。注:可以看看《算法精解》Kyle Loudon著 或者《数据结构》 主编 安训国 他们说的堆栈原理。
#include stdio.h
char* dg(char* instr, char* outstr, char* outstr2)
{
if (*instr == 0)
{
*outstr = 0;
return outstr2;
}
*(outstr + 1) = *instr;
outstr = dg(instr + 1, outstr + 2, outstr2);
/* 下两句一直不执行,直到outstr = dg(instr + 5, outstr + 10, outstr2)返回后才执行,其后不断执行后三句!*/
*outstr = *instr - 32;
return outstr + 2;
}
int main()
{
char buf[50];
dg("aybdx", buf, buf);
puts(buf);
return 0;
}
当然有:
#include string.h
char *strstr(const char *haystack, const char *needle);
Return
It returns a pointer into the string haystack that is the first character of
the substring, or a null pointer if no match was found. If needle is an empty
string, the function returns haystack.
Description
This is like strchr() , except that it searches haystack for a substring
needle rather than just a single character.
顺便,如果你自己写不出这样的函数,不建议你继续学习C。