strchr(查找字符串中第一个出现的指定字符)
相关函数
index,memchr,rinex,strbrk,strsep,strspn,strstr,strtok
表头文件
#include
定义函数
char * strchr (const char *s,int c);
函数说明
strchr()用来找出参数s字符串中第一个出现的参数c地址,然后将该字符出现的地址返回。
返回值
如果找到指定的字符则返回该字符所在地址,否则返回0。
范例
#include
main()
{
char *s="0123456789012345678901234567890";
char *p;
p=strchr(s,'5');
printf("%s\n",p);
}
执行
56789012345678901234567890
strstr(在一字符串中查找指定的字符串)
相关函数
index,memchr,rindex,strchr,strpbrk,strsep,strspn,strtok
表头文件
#include
定义函数
char *strstr(const char *haystack,const char *needle);
函数说明
strstr()会从字符串haystack 中搜寻字符串needle,并将第一次出现的地址返回。
返回值
返回指定字符串第一次出现的地址,否则返回0。
范例
#include
main()
{
char * s="012345678901234567890123456789";
char *p;
p= strstr(s,"901");
printf("%s\n",p);
}
执行
901234567890123456789
1. 求子串位置的算法
不用什么算法,直接用C语言里面的strstr即可。
原型:
char *strstr(const char *s1, const char *s2);
如果一定要自己写的话,这样:
int Index(char *haystack, char *needle, int *pos)
{
char *p = haystack;
char *p1, *p2;
if ( !*needle )
return((char *)haystack);
while(*p)
{
p1 = p;
p2 = (char *) needle;
while( *p1 && *p2 && (*p1++==*p2++) );
if (!*p2)
{
*pos = p - haystack;
return *pos;
}
p++;
}
return -1;
}
2. 求子串的算法
char *SubString(char *subStr, int iPos, int iLen)
{
char *srcStr = buffer;
if( srcStr==NULL )
return NULL;
if( iPos<1 || iPos>(int)strlen(srcStr) || iLen<1 )
return NULL;
if( iLen>(int)strlen(srcStr)-iPos+1 )
iLen = (int)strlen(srcStr)-iPos+1;
strncpy(subStr, &buffer[iPos-1], iLen);
subStr[iLen] = '\0';
return subStr;
}
写个main函数 在里面调用就行了
写个main函数也调试不出来
它还有好多条件都没有给出来,如SString S这里的SString 是什么?这个也是要写的pos是什么?也没有写出来。