c语言寻找字符串首次,C语言实现 strpos 查找字符串首次出现位置

今天又写了个函数,查找字符串首次出现位置,以此作为记录:

/* {{{ 查找字符串首次出现的位置,没有找到返回 -1,两个字符串相等返回 0

在GCC下使用C99:

int strpos(const char *haystack,const char *needle, _Bool ignorecase = 0)

_Bool ignorecase =1 忽略大小写

时间:2012-08-17 By Dewei

*/

int strpos(const char *haystack,const char *needle, _Bool ignorecase = 0)

{

register unsigned char c, needc;

unsigned char const *from, *end;

int len = strlen(haystack);

int needlen = strlen(needle);

from = (unsigned char *)haystack;

end = (unsigned char *)haystack + len;

const char *findreset = needle;

for (int i = 0; from < end; ++i) {

c = *from++;

needc = *needle;

if (ignorecase) {

if (c >= 65 && c < 97)

c += 32;

if (needc >= 65 && needc < 97)

needc += 32;

}

if(c == needc) {

++needle;

if(*needle == '\0') {

if (len == needlen)

return 0;

else

return i - needlen+1;

}

}

else {

if(*needle == '\0' && needlen > 0)

return i - needlen +1;

needle = findreset;

}

}

return -1;

}

/* }}} */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值