views:

96

answers:

4

I am trying to convert a string (const char* argv[]) to a double precision floating point number:

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;
}

Can anyone help me? Thanks

+6  A: 

Use sscanf (Ref)

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

or strtod (Ref)

numbers[i] = strtod(argv[i], NULL);
KennyTM
`strtod` did the job. Thanks =D
Time Machine
Oh, and the `,` instead of a `;` was a typo.
Time Machine
+1  A: 

Or use atof

http://www.cplusplus.com/reference/clibrary/cstdlib/atof/

LukeN
No real reason to use atof anymore with the safer strtod
Martin Beckett
A: 

You haven't said what format the const char*s might be in. Presuming they're text strings like "1.23", then sscanf(argv[i], "%lf", &numbers[i-1]) ought to do the job.

crazyscot
+1  A: 

You can use strtod which is defined in stdlib.h

Theoretically, it should be more efficient that the scanf-family of functions although I don't think it'll be measurable.

Isak Savo