Reputation:
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
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
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
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
Reputation: 5722
Or use atof
http://www.cplusplus.com/reference/clibrary/cstdlib/atof/
Upvotes: 1