jenya7 0 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба On 11/23/2022 at 3:38 PM, jcxz said: Если после вызова (*endptr != str) && (*endptr указывает на допустимый сивмол границы числа) -> значит разбор был корректный. но если я допускаю только цифровую строку - тогда мне нужно только это условие - *endptr == '\0'. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
engel65536 12 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба Если вы сами ручками проверяете строку на непустоту - да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба On 11/23/2022 at 3:39 PM, engel65536 said: Указатель указывает на вашу же строку (только в общем случае не на первый символ), которую вы передали в качестве параметра в strtol. ну это существенно упрощает парсинг 🙂 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба 6 минут назад, jenya7 сказал: но если я допускаю только цифровую строку - тогда мне нужно только это условие - *endptr == '\0'. Если использовать strtol()/strtoul() для разбора сложных строк типа: "NNN, MMM. KKK; ..." где NNN, MMM, KKK - числа; то можно разбирать такую строку сразу, на лету, не деля её на подстроки. Не нужно отдельных буферов и лишних телодвижений с копированиями. И при разборе анализировать стоповый символ (вызвавший останов разбора числа). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба On 11/23/2022 at 3:46 PM, jcxz said: Если использовать strtol()/strtoul() для разбора сложных строк типа: "NNN, MMM. KKK; ..." где NNN, MMM, KKK - числа; то можно разбирать такую строку сразу, на лету, не деля её на подстроки. Не нужно отдельных буферов и лишних телодвижений с копированиями. И при разборе анализировать стоповый символ (вызвавший останов разбора числа). 👍. то что нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 235 23 ноября, 2022 Опубликовано 23 ноября, 2022 · Жалоба 14 минут назад, jenya7 сказал: а физически где строка находиться? понятно в RAM но по какому принципу ф-ция выделяет место? Функция никакого места этой строке не выделяет. Она получает уже указатель на строку. А компилятор обычно размещает такую const-строку в const-памяти (если МК - обычно это flash) Где у вас - не знаю, загляните в .map. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
arhiv6 18 24 ноября, 2022 Опубликовано 24 ноября, 2022 · Жалоба В 23.11.2022 в 19:24, jenya7 сказал: а условие успеха будет (endptr != NULL) ? Вот хорошая статья про то, как правильно проверять корректность перевода строки в число функцией strtol. В конце приведён код, как корректно проверить успех этой операции. http://knzsoft.blogspot.com/2015/04/strtol-strtoll.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться