我正在尝试在字符串中找到子字符串的位置。
#include <string.h>
#include <stdio.h>
void find_str(char const* str, char const* substr)
{
char* pos = strstr(str, substr);
if(pos) {
printf("found the string '%s' in '%s' at position: %d\n", substr, str, pos - str);
} else {
printf("the string '%s' was not found in '%s'\n", substr, str);
}
}
int main(int argc, char* argv[])
{
char* str = "gdeasegrfdtyguhıjohhıhugfydsasdrfgthyjkjhghh";
find_str(str, "hh");
find_str("dhenhheme kekekeke hhtttttttttttttttttttttttttttttttttttttttthhtttttttttttt", "hh");
return 0;
}
输出:
找到字符串'hh' 'gdeasegrfdtyguhıjohhıhugfydsasdrfgthyjkjhghh'位置:19
发现 'dhenhheme kekekeke中的字符串'hh' hhtttttttttttttttttttttttttttttttttttttttttttthhtttttttttttt'位置: 4
在第一个例子中,它说它处于第19位。但不应该说它18?因为在第二个例子中它表示4.它从子串的开头开始。
我很困惑。
答案 0 :(得分:9)
字符'ı'
不是ASCII字符,因此可能占用两个字节。