假设我有一个字符串"qwerty"
,我希望在其中找到e
字符的索引位置。 (在这种情况下,索引将是2
)
我如何在C中完成?
我找到了strchr
函数,但它返回一个指向字符而不是索引的指针。
答案 0 :(得分:62)
只需从strchr返回的字符串地址中减去:
char *string = "qwerty";
char *e;
int index;
e = strchr(string, 'e');
index = (int)(e - string);
请注意,结果为零,因此在上面的例子中它将是2。
答案 1 :(得分:7)
您也可以使用strcspn(string, "e")
但这可能会慢很多,因为它可以处理搜索多个可能的字符。使用strchr
并减去指针是最好的方法。
答案 2 :(得分:3)
void myFunc(char* str, char c)
{
char* ptr;
int index;
ptr = strchr(str, c);
if (ptr == NULL)
{
printf("Character not found\n");
return;
}
index = ptr - str;
printf("The index is %d\n", index);
ASSERT(str[index] == c); // Verify that the character at index is the one we want.
}
此代码目前尚未经过测试,但它展示了正确的概念。
答案 3 :(得分:0)
怎么样:
char *string = "qwerty";
char *e = string;
int idx = 0;
while (*e++ != 'e') idx++;
复制到e以保留原始字符串,我想如果你不在乎你可以只操作* string
答案 4 :(得分:0)
这应该做到:
//Returns the index of the first occurence of char c in char* string. If not found -1 is returned.
int get_index(char* string, char c) {
char *e = strchr(string, c);
if (e == NULL) {
return -1;
}
return (int)(e - string);
}