私は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に存在しますか?