Чтение массивов символов C в двойники - PullRequest
2 голосов
/ 29 марта 2011

Это очень элементарный вопрос, но мой C очень ржавый, и мне нужно освежиться.У меня есть строка, которая всегда в одном и том же формате: di ###.# ###.# ###.

Я хотел бы прочитать первое число в d1, второе в d2, а третье в d3.

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

  //some code that I don't know

  return 0;
}

Можете ли вы, ребята, помочь мне?Я понимаю, что strtod () может помочь только при разборе чисел, но как мне пропустить "di" в начале?

1 Ответ

11 голосов
/ 29 марта 2011

Вы можете использовать sscanf:

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

В этой строке вы даете строку форматирования (в основном выкладываете, где ожидаете числа), а затемпредоставляя адреса переменных, в которые вы хотите поместить результаты, по порядку.Оператор & получает адрес независимо от того, к чему он применяется, в данном случае это ваши переменные d1, d2 и d3.

( Ссылка предоставлена ​​ находится на сайте C ++, но для этой функции)

...