Задача такая: есть текстовый файл, в который в произвольном порядке идет
вывод программы. Среди этого текста (известно в каком месте) идут строки
типа:
A1 B1 C1 D1
A2 B2 C2 D2
...........
An Bn Cn Dn
Причем n _заранее неизвестно_.
Требуется: _за один проход_ считать эти строки в структуру типа
struct {
type A, B, C, D;
}
Так вот: самое главное - за один проход чтения. Как это сделать?
Я программист неопытный, но думаю что проще всего с помощью динамически
образуемого связного списка...
Заранее всем спасибо.
> Только вот возник еще тупой вопрос (если никто не ответит, вынесу в отделеный топик :-@ ):
> Как уже имея строку типа
> char * blabla= "12 18.4 27.8 -11.3"
> выделить из нее значения int , float x3?
Если заканее известно, сколько чисел и где какие (int, float) стоят, то можно попробовать sscanf.
Иначе -- выделять группы идущих подряд непробельных символов и преобразовывать каждую группу тем же sscanf или atoi/atof.
А я в свое время игрался с конструкцией %* в форматной строке.
См man на scanf. Звездочка означает что данное поле нужно пропустить.
Так что
char buf[1024]; // Заложимся на разумные значения
int dummy,i;
int count=0;
do{
++count;
for(i = 0; i < count-1;++i) strcat(buf,"%*d ");
strcat(buf,"%d");
}while(sscanf(text,buf,&dummy) != 1);
Соответственно - после цикла в count будет количество чисел.
Точно также можно последовательно считать