strstr -- ошибка

ratman
Offline
Зарегистрирован: 11.10.2015










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]

Идея, думаю, понятна, ищу наличие символа '=' в строке. Ругается именно на второй аргумент. Что может быть?

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Компилятор всё написал, что нельзя char преобразовать в const char*. Что непонятного в этом сообщении компилятора? Чем отличается символ от строки?

ratman
Offline
Зарегистрирован: 11.10.2015

kisoft пишет:
Компилятор всё написал, что нельзя char преобразовать в const char*. Что непонятного в этом сообщении компилятора? Чем отличается символ от строки?
Что делать не понятно.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

ratman пишет:

kisoft пишет:
Компилятор всё написал, что нельзя char преобразовать в const char*. Что непонятного в этом сообщении компилятора? Чем отличается символ от строки?
Что делать не понятно.

Это как раз понятно, учить язык.

Я специально задал наводящий вопрос, почему нельзя char преобразовать в const char *  ? Ответа не увидел.

Buzzer2010
Buzzer2010 аватар
Offline
Зарегистрирован: 10.03.2016

А я тоже не понимаю почему нельзя? Если не понимаешь почему нельзя, значит - можно )))

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Сегодня я трезвый и добрый. Сил нет ушат помоев выливыать... милосердие стучит в мое сердце.

'x' - это ОДИНОЧНЫЕ кавычки, используются для символов, или, говоря терминами компилятора, констант типа char;

"какая-то-херня" - двойные кавычки, используются для обозначения строк. В С++ - немного перегружены, но без потери смысла, с чистом С - только строки, компилятор воспринимает как массив типа char и добавляет 0 в конце.

Массив типа char это, внезапно!, и есть char*, это, с точки зрения компилятора, одинаковы типы.

---------------------------\

распрстраненная ошибка всех недо-программистов, пришедших в С и С++ из языков 4-ого поколения (Python, C#, почти все языки WEB програмирования) - это неуважение к разнице между одиночными и двойными кавычками.

Так же как недо-сисадмины из мира Винды не понимают разницы между большими и маленькими буквами.

.... нго это так.... старческое бурчание... сорри.

-----------------------------------

ТС, ты понял в чем дело? Кавычки у тебя не те.

'=' - это байт и тип у него char.

"=" это массив {'=',0} и тип у него char*. Ясно?

ratman
Offline
Зарегистрирован: 11.10.2015

wdrakula пишет:

ТС, ты понял в чем дело? Кавычки у тебя не те.

Да понял я, понял. Спасибо.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Вместо strstr для поиска одного символа лучше использовать strchr.