strstr -- ошибка
- Войдите на сайт для отправки комментариев
Сб, 25/06/2016 - 12:01
D:\Arduino\sketch\acs_001\acs_001.ino: In function 'void parseCfgString(char*)': acs_001:89: error: invalid conversion from 'char' to 'const char*' [-fpermissive] res = strstr(cfgString, '='); ^ In file included from D:\Arduino\[!] soft\arduino-1.6.8\hardware\arduino\avr\cores\arduino/Arduino.h:25:0, from sketch\acs_001.ino.cpp:1: d:\arduino\[!] soft\arduino-1.6.8\hardware\tools\avr\avr\include\string.h:145:14: error: initializing argument 2 of 'char* strstr(const char*, const char*)' [-fpermissive] extern char *strstr(const char *, const char *) __ATTR_PURE__; ^ exit status 1 invalid conversion from 'char' to 'const char*' [-fpermissive]
Идея, думаю, понятна, ищу наличие символа '=' в строке. Ругается именно на второй аргумент. Что может быть?
Компилятор всё написал, что нельзя char преобразовать в const char*. Что непонятного в этом сообщении компилятора? Чем отличается символ от строки?
Это как раз понятно, учить язык.
Я специально задал наводящий вопрос, почему нельзя char преобразовать в const char * ? Ответа не увидел.
А я тоже не понимаю почему нельзя? Если не понимаешь почему нельзя, значит - можно )))
Сегодня я трезвый и добрый. Сил нет ушат помоев выливыать... милосердие стучит в мое сердце.
'x' - это ОДИНОЧНЫЕ кавычки, используются для символов, или, говоря терминами компилятора, констант типа char;
"какая-то-херня" - двойные кавычки, используются для обозначения строк. В С++ - немного перегружены, но без потери смысла, с чистом С - только строки, компилятор воспринимает как массив типа char и добавляет 0 в конце.
Массив типа char это, внезапно!, и есть char*, это, с точки зрения компилятора, одинаковы типы.
---------------------------\
распрстраненная ошибка всех недо-программистов, пришедших в С и С++ из языков 4-ого поколения (Python, C#, почти все языки WEB програмирования) - это неуважение к разнице между одиночными и двойными кавычками.
Так же как недо-сисадмины из мира Винды не понимают разницы между большими и маленькими буквами.
.... нго это так.... старческое бурчание... сорри.
-----------------------------------
ТС, ты понял в чем дело? Кавычки у тебя не те.
'=' - это байт и тип у него char.
"=" это массив {'=',0} и тип у него char*. Ясно?
ТС, ты понял в чем дело? Кавычки у тебя не те.
Вместо strstr для поиска одного символа лучше использовать strchr.