[C语言]字符串处理 - 查找指定字符在字符串中的位置(支持中文字符)
2008-11-6: 函数StringFind(支持中文字符,默认从1开始),为此写了SrLenMemU函数(实现时没有用上)。开始实现该函数时考虑的太复杂了,浪费了不少时间,后来发现仅仅是2个指针进行遍历的问题。"唯一真正重要的部分是设计",感叹Linus所说。
#include <stdio.h>
/*获取一个指定字符的位置,中文字符作为一个字符计算*/
int StringFind(const char* string,const char* find,int number)
{
char* pos = string;
char* p = string;
int count = 0;
while (number > 0)
{
/*定义查找到的字符位置的指针,以便临时指针进行遍历*/
pos = strstr(p,find);
/*当位置指针为0时,说明没有找到这个字符*/
if (pos == 0)
return -1;
/*当位置指针和临时指针相等说明下一个字符就是要找的字符,如果临时指针小于位置指针,则进行遍历字符串操作,并将count增1*/
while(p <= pos)
{
if(*p > 0x80 || *p < 0)
{
p++;
}
p++;
count++;
}
/*对要查找的次数减一*/
number--;
}
return count;
}
int main()
{
/*进行测试*/
char* t = "a哈哈aab和c哈";
printf("字符串位置:%d\n",StringFind(t,"和",1));
printf("字符串位置:%d\n",StringFind(t,"a",3));
return 0;
}