user142019
user142019

Reputation:

Converting a string into a double

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

Upvotes: 4

Views: 15321

Answers (4)

kennytm
kennytm

Reputation: 523754

Use sscanf (Ref)

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

or strtod (Ref)

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

BTW,

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

-->

Upvotes: 9

Isak Savo
Isak Savo

Reputation: 35954

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.

Upvotes: 1

crazyscot
crazyscot

Reputation: 12019

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.

Upvotes: 0

Related Questions