Я пытаюсь использовать sscanf
для преобразования массива char
в C в double
.Моя проблема лучше всего описана в этом коротком минимальном рабочем примере:
#include <stdio.h>
int main (int argc, char **argv)
{
char string_one[] = "1.2e-4";
char string_two[6] = "1.2e-4";
double one, two;
sscanf(string_one, "%lf", &one);
sscanf(string_two, "%lf", &two);
printf("%e, %e\n", one, two);
return 0;
}
Скомпилированный с GCC и запускающий в результате исполняемый файл возвращает 1.200000e-04, 1.200000e-41
вместо того же числа дважды.Проблема не появляется, если число с плавающей запятой, которое я хочу преобразовать, имеет форму 3e4
(если нет десятичного разделителя).
Для моей программы я должен определить массив char
сфиксированный размер (так как я заполняю массив в ходе программы), поэтому я сталкиваюсь с этой проблемой.
Я думаю, что проблема может быть довольно очевидной - но, поскольку я новичок вУ меня нет идей, в чем может быть проблема.Любая помощь приветствуется!