Adam S
Adam S

Reputation: 9245

Reading C character arrays into doubles

This is a very elementary question, but my C is very very rusty and I need a refresher. I have a string which is always in exactly the same format: di ###.# ###.# ###.

I would like to read the first number into d1, the second into d2, and the third into d3.

int main ()
{
  double d1, d2, d3;
  char mystring[] = "di 123.4 567.8 901";

  //some code that I don't know

  return 0;
}

Can you guys help me out? I understand strtod() can help just parsing the numbers, but how do I skip over the "di" at the beginning?

Upvotes: 2

Views: 1461

Answers (1)

Chris Cooper
Chris Cooper

Reputation: 17584

You can use sscanf:

sscanf(mystring, "di %lf %lf %lf", &d1, &d2, &d3);

In this line, you are giving a format string (basically laying out where you expect the numbers to be), and then supplying the addresses of the variables you want the results to be put in, in order. The & operator takes the address of whatever it is applied to, which in this case is your d1,d2, andd3 variables.

(The reference supplied is on a C++ site, but is for this function)

Upvotes: 11

Related Questions