2014-02-06 2 views
4

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

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

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

ответ

6

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

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

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

Bro эта строка вводится пользователем во время выполнения. Предположим, что он ввел «asdfgh \ hj». то как я могу изменить его на "asdfgh \\ hj". @dasblinkenlight – ranaarjun

+1

@ranaarjun Если строка вводится пользователем, вам ничего не нужно менять. Слэш необходимо экранировать только для компилятора. Поэтому, если вы вызываете 'strchr (userString, '\\')', вы получите указатель на правильную позицию. – dasblinkenlight

+1

@ranaarjun Вы сказали, что компилятор выдает ошибку. Если строка вводится пользователем, то ошибка не может быть связана с экранированием. Таким образом, не только ваш оригинальный пост обманывает, но вам нужно показать нам фактическую ошибку, которую вы получаете. –

1

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

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

Неверно: строка стека сена должна также ускользнуть. –

+0

@DavidGiven Опечатка. Исправлено, спасибо за внимание :) – Agis

1

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

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

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

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

вместо этого.

+2

Обратная косая черта в строке будет считаться '\ h' (Я не голосовал). – rullof

+0

@rullof; К сожалению! Благодарю. +1 за это :) – haccks

1

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

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

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

Смежные вопросы