如何在C中找到字符串中字符的索引?
假设我有一个字符串"qwerty"
,我希望在其中找到e
字符的索引位置。 (在这种情况下,索引将是2
)
我怎么用C做?
我找到了strchr
函数,但它返回一个指向字符而不是索引的指针。
只需从strchr返回的内容中减去字符串地址:
char *string = "qwerty"; char *e; int index; e = strchr(string, 'e'); index = (int)(e - string);
请注意,结果为零,因此在上面的示例中它将为2。
你也可以使用strcspn(string, "e")
但这可能会慢得多,因为它能够处理搜索多个可能的字符。 使用strchr
并减去指针是最好的方法。
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. }
此代码目前尚未经过测试,但它展示了正确的概念。
关于什么:
char *string = "qwerty"; char *e = string; int idx = 0; while (*e++ != 'e') idx++;
复制到e以保留原始字符串,我想如果你不在乎你可以只操作* string