2014-11-09 3 views
-2

Я пытаюсь использовать strstr() найти первое вхождение двойные кавычки (»), однако, когда я использую эту строку кода:Как поместить «внутри строки в C

pch = strstr(tmp,"""); 

Он не будет компилироваться, потому что у меня нет завершающей цитаты. Поэтому я использовал

pch = strstr(tmp,'"'); 

который затем говорит мне, что есть ошибка, как это:

passing argument 2 of ‘strstr’ makes pointer from integer without a cast [enabled by default] 
    pch = strstr(tmp,'"'); //finds the first occurrence and deletes the preceeding 
^
In file included from /usr/include/stdio.h:29:0, 
       from assignment1.c:1: 
/usr/include/string.h:40:8: note: expected ‘const char *’ but argument is of type ‘int’ 
char *_EXFUN(strstr,(const char *, const char *)); 

Любые идеи вокруг этого или кто-нибудь знает способ использовать strstr для обнаружения двойной кавычки? Может быть, с преобразованиями ascii?

Заранее спасибо.

+1

Попробуйте это: 'strstr (tmp," \ ""); ' – haccks

+0

Я не могу найти эту информацию в любом месте. Огромное вам спасибо! – JamesDonnelly

+1

Это дано в любой базовой книге/учебнике C. Для вашей информации смотрите стандарт C11 ** 6.4.4.4 Персонаж константы **: «Одинарная кавычка», «двойная кавычка», вопросительный знак?, th e обратная косая черта \ и произвольные целочисленные значения представляются в соответствии со следующей таблицей побега последовательностей: одиночная кавычка '\' двойная кавычка "\" вопросительный знак? \? обратная косая черта \\\ восьмеричный символ \ восьмеричные цифры шестнадцатеричный символ \ x шестнадцатеричные цифры – haccks

ответ

3

Использование pch = strstr(tmp,"\""); и он будет работать

0

Вы можете избежать кавычки! например:

pch = strstr(tmp,"\""); 
1

Чтобы вставить какие-либо специальные символы внутри строки, вам нужно избежать ее обратным слэшем.

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

Полный список управляющих последовательностей доступен here

Вы можете искать с strstr, но в случае, если вы просто хотите, чтобы найти позицию символа, то strchr будет намного быстрее

pch = strchr(tmp,'\"'); 
Смежные вопросы