Преобразование строки в двойную - PullRequest
4 голосов
/ 23 мая 2010

Я пытаюсь преобразовать строку (const char* argv[]) в double число с плавающей запятой точности:

int main(const int argc, const char *argv[]) {
    int i;
    double numbers[argc - 1];
    for(i = 1; i < argc; i += 1) {
        /* -- Convert each argv into a double and put it in `number` */
    }
    /* ... */
    return 0;
}

Кто-нибудь может мне помочь? Спасибо

Ответы [ 4 ]

9 голосов
/ 23 мая 2010

Использование sscanf (Ref)

sscanf(argv[i], "%lf", numbers+i);

или strtod (Ref)

numbers[i] = strtod(argv[i], NULL);

КСТАТИ

for(i = 1; i < argc, i += 1) {
//-----------------^ should be a semicolon (;)

->

1 голос
/ 23 мая 2010

Вы можете использовать strtod , который определен в stdlib.h

Теоретически, должно быть более эффективным, чем семейство функций scanf, хотя я не думаю, что это будет измеримо.

1 голос
/ 23 мая 2010
0 голосов
/ 23 мая 2010

Вы не сказали, в каком формате могут быть const char* s. Предполагая, что они представляют собой текстовые строки, такие как "1.23", тогда sscanf(argv[i], "%lf", &numbers[i-1]) должен выполнить эту работу.

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