我是 C 的新手,希望有一些内置的东西我可以使用。假设我有一个列表,我想查找列表的位置(列表中的所有项目都是唯一的)。像这样:
char *name[] = {"monkey", "pig", "goat", "dog", "cat"};
我试过:
char *name[] = {"monkey", "pig", "goat", "dog", "cat"};
int *found = strstr (*name,"dog");
printf("Found at %i \n", found); //expect 3(or 4, if it doesn't use 0s) result
但它一直给我 2 的结果(即使我输入了不存在的名称)。我换strstr
了strcspn
也没有运气。
我之所以问是因为我不确定并且我创建了自己的函数来执行此操作,但是它非常糟糕而且不是很灵活(我在其中硬编码了列表名称),我想如果 C 中有一些东西那么它会更好我。这是我制作的功能(如果您不想失去阅读它的脑细胞,请遮住眼睛,开玩笑:-):
int indexOf(char nameToFind) {
//returns the location of an item in a list
int pos = -1;
int i;
for (i = 0; i < sizeof(name) / sizeof(name[0]) && pos == -1; i++)
{
// Assuming there is a char[] field called name in Stdinfo
if (*name[i] == nameToFind) {
pos = i;
}
}
return pos;
}
C 中是否存在这样的东西,它比我的版本更快、更灵活?