Чтение неизвестного количества значений из стандартного ввода в C - PullRequest
0 голосов
/ 16 марта 2011

Мне нужно прочитать входной файл следующим образом:

0.142857 0.714286 
0.642857 0.714286 
0.285714 0.500000
0.500000 0.500000 
0.785714 0.428571 
0.357143 0.357143 
0.714286 0.214286 
0.928571 0.071429

Каждая строка соответствует точке на плоскости, причем неизвестное количество точек вводится из стандартного ввода.* есть идеи?

Ответы [ 3 ]

3 голосов
/ 16 марта 2011

scanf возвращает количество полученных параметров. Вы можете проверить, чтобы убедиться, что вы получаете то, что просите.

Пример:

#include <stdio.h>

// ...

double f1, f2;

while(scanf("%lf %lf", &f1, &f2) == 2)
{
  // store f1 and f2 somewhere
}
1 голос
/ 16 марта 2011

Если вы достаточно доверяете вводу, используйте scanf().

Проверьте возвращаемое значение, чтобы убедиться, что пара прочитана, проверьте EOF и все готово.

double x, y;
while (scanf("%lf%lf", &x, &y) == 2) {
  /* deal with (x, y) */
}
if (!feof(stdin)) /* input error */;

НЕ ИСПЫТАНО


Если вы не доверяете вводу, используйте fgets() и анализируйте каждую строку «от руки»

0 голосов
/ 16 марта 2011

Прочитайте каждую пару и добавьте ее в связанный список, пока не получите все пары на входе?

...