C разбирает double из аргументных строк - PullRequest
6 голосов
/ 08 февраля 2010

Я пытаюсь проанализировать значение аргумента в C и преобразовать число в двойное значение. У меня есть:

char *stringEnd; double num = strtod("123.0", &stringEnd);

Я использовал 123.0 просто для проверки функции, но она всегда возвращает значение 0.0. Кто-нибудь знает, что я делаю не так?

Ответы [ 5 ]

7 голосов
/ 08 февраля 2010

Включаете ли вы соответствующий заголовок? т.е.: #include <stdlib.h>

Сначала (хотя (в любом случае вы должны делать это все время)), попробуйте скомпилировать все предупреждения (-Wall в GCC).

Если вы получаете предупреждение о том, что strtod не определено, это показывает, откуда возникла проблема.

Это неприятно, потому что C неявно объявит любую функцию, для которой у него нет прототипа, как возвращающую int!

2 голосов
/ 08 февраля 2010

Если вам нужно использовать strtod , вы можете сделать:

double num = strtod("123.0",NULL);

Вы также можете использовать sscanf

double num;    
sscanf("123.0","%lf",&num);
1 голос
/ 08 февраля 2010

Вам необходимо включить stdlib.h

1 голос
/ 08 февраля 2010

Вы можете использовать sscanf.

double num;
sscanf("123.0", "%lf", &num);
0 голосов
/ 08 февраля 2010

На каком языке ваша операционная система? Я не уверен, как реагирует функция C strtod, но я знаю, что эквивалентная функция delphi учитывает настройки операционной системы. Некоторые языки (французский, немецкий, ...) используют "," вместо "." в качестве десятичного разделителя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...