В C как найти символ '\' в строке?
Предположим, у меня есть строка, введенная пользователем asdfgh\hj
и я хочу узнать индекс \
персонаж в строке Как я могу сделать это в C?
Я старался strchr()
функционировать как strchr("asdfgh\hj",'\')
но компилятор выдает ошибку.
Тогда я использовал ==
оператор, но та же проблема с ним - снова компилятор выдает ошибку.
4 ответа
Я старался
strchr()
функционировать какstrchr("asdfgh\hj",'\')
но компилятор выдает ошибку
Это правильная функция! Причина, по которой вы получаете ошибку, состоит в том, что \
это особый "побег" Используется для определения "специальных" непечатаемых символов, таких как перевод строки \n
, Вот почему сама обратная косая черта \
нужно убежать, вот так:
strchr("asdfgh\\hj",'\\')
Стандарт C говорит, C11 6.4.4.4:
Двойная кавычка
"
и вопросительный знак?
представимы либо сами по себе, либо с помощью escape-последовательностей\"
а также\?
соответственно одинарная кавычка'
и обратный слеш\
должны быть представлены соответственно escape-последовательностями\'
а также\\
,
Так что используйте
strchr("asdfgh\\hj",'\\')
вместо.
В C обратная косая черта используется для жестко набранных символов, таких как \n
, Так что вам нужно написать \\
для \
сам:
char *backslash = strch("some text containing \\ ...", '\\');
Обратите внимание, что в строке вы указали \
также должны быть написаны \\
в противном случае это будет считаться \h
который не имеет смысла.