Помогите пожалуйста. Как из сторики взять число?
- Войдите на сайт для отправки комментариев
Втр, 24/03/2015 - 13:05
Добрый день. Подскажите пожалуйста, как из строки, например, "temp=22" взять число 22, типа int.
Добрый день. Подскажите пожалуйста, как из строки, например, "temp=22" взять число 22, типа int.
Слово temp у Вас и будет числом "22" типа int.
Добрый день. Подскажите пожалуйста, как из строки, например, "temp=22" взять число 22, типа int.
Если строка типа String, то читайте про String.toInt()
Если типа string, читайте про функцию atoi()
Каков вопрос, такие и ответы, еще вариант для строки типа char arr[]: найти первую цифру (strcspn), от неё преобразовать в число (atoi)
Тут правильнее найти знак равно, и сделать шаг к цифрам. Так быстрее.
Какой вопрос, такой ответ
Спасибо за ответы, не было времени зайти на форум. Как подсказал brokly, мне надо найти =, а все что после перевести в int.
Хочу использовать для установки температуры, через sim900. Допустим отсылаю смс - "term = 22", записываю смс в строку, проверяю что пришо и перевожу в int.
kisoft, немогли бы объяснить как правильно использовать strcspn.
По ссылке есть пример с strcspn. А если своими словами, ищем любой символ, указанный в строке 2 (второй параметр) в строке 1 (первый параметр. На выходе выдает индекс найденного символа.
Я соглашусь с тем, что лучше искать символ '=', это проще. strcspn для более других задач :)
char *ptr = strchr(str,'='); int num = -1; if(ptr) { ptr++; num = atoi(ptr); } Serial.println(num);для частной задачи, когда строка вида "temp=xx" лучше вообще ничего не искать, а сразу выкусывать 6 и 7 символы и преобразовывать в число :)
Ну тогда так... Их можно не выкусывать а сразу скормить всю строку atoi :) Только мне кажется, что топикстартеру нужно еще знать какой именно параметр он получил. На самом деле самый правильный ответ дал Araris.
если надо определять, какой именно, то значит их ( пар <param>=<value>) несколько. тогда парсить strtok'ом
на самом деле правильного ответа нет, т.к никто не знает, что именно надо ТСу.
возможно, даже сам ТС :)
спасибо вроде разобрался.
Добрый день уважаемые знатоки, не стал пладить тему так как вопрос похожий. Получаю ответ от модуля SIM900 о запросе баланса, приходит следующее: +CUSD: 0," Vash balans 68.84 r, используя
обрезается +CUSD: 0,, но почемуто естается еще реклама в смс в виде
" vash balans 68.84 r
Vesennie znakomstva v SMS-chat
Подскажите как правильно взять из этой смс "vash balans 68.84 r" или хотя бы просто "68.84 r".
Много способов есть, я бы регулярные выражения использовал, а то фиг знает как в будующем оператор поменяет сообщение. Можно вот так извратиться :)
Спасибо. А может как то можно только число взять 68.84.
Опять же сильно не замарачиваясь, но надо понимать, что это всё частные решения общей задачи. Если оператор будет менять формат сообщений надо будет и тут менять всё.
Спасибо большое, сейчас попробую.
Все работает, спасибо Penni.
Подскажите пожалуйста еще по заполнению строки, для дальнейшей отправки смс. Корректно ли будет сделать вот так:
char* SMS_string; strcat(SMS_string, "GUARD-"); strcat(SMS_string, Statys); strcat(SMS_string, "Balance-"); strcat(SMS_string, balance); strcat(SMS_string, signal_urov);