Преобразование char* в double
- Войдите на сайт для отправки комментариев
Вс, 31/07/2016 - 17:00
Доброго времени суток.
написал такой код
char* pznachX1[] = {"1", "2", "3", ".", "4", "5", "6", "9"}; char pzX1[8] = {}; byte m = 0; double X1; void setup() { Serial.begin(115200); while (m < 8) { // strncpy(pzX1, pznachX1[m++], 8); strncpy(pzX1, pznachX1[m], 8); // http://www.cyberforum.ru/cpp-beginners/thread158393.html m++; } X1 = atof(pzX1); Serial.print(X1); } void loop() { }
Все бы ничего, но не работает. Серийный порт выдает значение 9.00 Т.е. последнее число в pznachX1.
Где я ошибся?
Благодарю, но мне нужно преобразовать именно
char
* pznachX1[] = {
"1"
,
"2"
,
"3"
,
"."
,
"4"
,
"5"
,
"6"
,
"9"
}; в double.
Смысл так извращаться - хранить массив указателей на строки, каждая строка при этом в один символ длиной (не считая нуль-терминатора)? Не вижу смысла в этом сексе - сами себя запутываете. указатель на строку
сам по себе уже является массивом символов, и к каждому символу можно обращаться по индексу: pznachX1[0] и т.д. А то, чем занимаетесь вы - это, как бы помягче, ненужные пляски.
Если вы настаиваете, чтобы именно ваш вариант был, то, конечно, хозяин барин. Жаль только, что не вникнете всё равно, т.к. вижу, что не читали, чего делает strncpy и чем оно отличается от strcat, например. Впрочем, не моё свинское это дело - учить людей жить:
Смысл так извращаться - хранить массив указателей на строки, каждая строка при этом в один символ длиной (не считая нуль-терминатора)? Не вижу смысла в этом сексе - сами себя запутываете. указатель на строку
сам по себе уже является массивом символов, и к каждому символу можно обращаться по индексу: pznachX1[0] и т.д. А то, чем занимаетесь вы - это, как бы помягче, ненужные пляски.
Только стоя и в гамаке! Щас попробую.
Пардон, когда писал ответ, 4 поста не видел, сейчас буду изучать. Спасибо.