How can I check if a single char exists in a C string?

c, char, string

Solution

If you need to search for a character you can use the `strchr` function, like this:

char* pPosition = strchr(pText, '|');

`pPosition` will be `NULL` if the given character has not been found. For example:

puts(strchr("field1|field2", '|'));

Will output: "|field2". Note that `strchr` will perform a forward search, to search backward you can use the `strrchr`. Now imagine (just to provide an example) that you have a string like this: "variable:value|condition". You can extract the value field with:

char* pValue = strrchr(strchr(pExpression, '|'), ':') + 1;

If what you want is the index of the character inside the string take a look to this post here on SO. You may need something like `IndexOfAny()` too, here another post on SO that uses `strnspn` for this.

Instead if you're looking for a string you can use the `strstr` function, like this:

char* pPosition = strstr(pText, "text to find");

Problem

I want to check if a single char is in a C string. The character is the `'|'` used for pipelines in Linux (Actually, I also want to check for `'<'`, `'>'`, `'>>'`, `'&'`). In Java I can do this: ``` String.indexOf() ``` But how can I do this in C, without looping through the whole string (a `char*` string)?

Original source

Related problems