Is there a function in c that will return the index of a char in a char array?
For example something like:
char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char find = 'E';
int index = findInedexOf( values, find );
Is there a function in c that will return the index of a char in a char array?
For example something like:
char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char find = 'E';
int index = findInedexOf( values, find );
strchr
returns the pointer to the first occurrence, so to find the index, just take the offset with the starting pointer. For example:
char values[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char find = 'E';
const char *ptr = strchr(values, find);
if(ptr) {
int index = ptr - values;
// do something
}
What about strpos?
#include <string.h>
int index;
...
index = strpos(values, find);
Note that strpos expects a zero-terminated string, which means you should add a '\0' at the end. If you can't do that, you're left with a manual loop and search.
int index = strchr(values,find)-values;
Note, that if there's no find
found, then strchr
returns NULL
, so index will be negative.
You can use strchr to get a pointer to the first occurrence and the subtract that (if not null) from the original char* to get the position.
There's also size_t strcspn(const char *str, const char *set)
; it returns the index of the first occurence of the character in s
that is included in set
:
size_t index = strcspn(values, "E");