Как я могу проверить, существует ли один символ в строке C?

Я хочу проверить, есть ли один символ в строке C. Символ'|' используется для конвейеров в Linux (на самом деле, я также хочу проверить'<', '>', '>>', '&').

На Java я могу сделать это:

String.indexOf()

Но как я могу сделать это в C, не перебирая всю строку (achar* строка)?

Ответы на вопрос(2)

strchr твой друг

Thestrchrункция @ находит первое вхождениеc (конвертируется вchar) в строке, на которую указываетs.

Thestrchrункция @ возвращает указатель на расположенный символ или нулевой указатель, если символ не встречается в строке.

И, конечно, в худшем случае функция должна пройти всю строку (как, вероятно, и функция Java).

вы можете использоватьstrchr функция, как это:

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

pPosition будетNULL если данный символ не был найден. Например

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

Будет вывод: «| field2». Обратите внимание, чтоstrchr выполнитвпере поиск, чтобы искать Назад вы можете использоватьstrrchr. Теперь представьте (просто для примера), что у вас есть строка вроде этой: «variable: value | condition». Вы можете извлечьценност поле с:

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

Если ты хочешь этопоказател символа внутри строки взгляните наэта почт здесь, на ТАК. Вам может понадобиться что-то вродеIndexOfAny() слишком,Во еще один пост на SO, который используетstrnspn за это

Вместо этого, если вы ищете строку, вы можете использоватьstrstr функция, как это:

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

ВАШ ОТВЕТ НА ВОПРОС