В C как найти символ '\' в строке?

Предположим, у меня есть строка, введенная пользователем asdfgh\hjи я хочу узнать индекс \ персонаж в строке Как я могу сделать это в C?

Я старался strchr() функционировать как strchr("asdfgh\hj",'\') но компилятор выдает ошибку.

Тогда я использовал == оператор, но та же проблема с ним - снова компилятор выдает ошибку.

4 ответа

Решение

Я старался strchr() функционировать как strchr("asdfgh\hj",'\') но компилятор выдает ошибку

Это правильная функция! Причина, по которой вы получаете ошибку, состоит в том, что \ это особый "побег" Используется для определения "специальных" непечатаемых символов, таких как перевод строки \n, Вот почему сама обратная косая черта \ нужно убежать, вот так:

strchr("asdfgh\\hj",'\\')

Попробуй это:

strchr("asdfgh\\hj",'\\')

Стандарт C говорит, C11 6.4.4.4:

Двойная кавычка " и вопросительный знак ? представимы либо сами по себе, либо с помощью escape-последовательностей \" а также \?соответственно одинарная кавычка ' и обратный слеш \ должны быть представлены соответственно escape-последовательностями \' а также \\,

Так что используйте

strchr("asdfgh\\hj",'\\')  

вместо.

В C обратная косая черта используется для жестко набранных символов, таких как \n, Так что вам нужно написать \\ для \ сам:

char *backslash = strch("some text containing \\ ...", '\\');

Обратите внимание, что в строке вы указали \ также должны быть написаны \\ в противном случае это будет считаться \h который не имеет смысла.

Другие вопросы по тегам