fscanf: чтение ',' вместо '\ n' - PullRequest
0 голосов
/ 21 августа 2010

Я читаю файл, который содержит такие данные:

1,1
0.5,0.5
2,2

это векторы, все числа двойные.

, поскольку в моем упражнении длина каждого вектора равнаизвестно, я использую цикл for для чтения каждого вектора:

    for (i=0; i<NUM; i++) {  //number of vectors to read
        for (j=0; j<DIM; j++) {  //length of each vector
        fscanf(fp,"%lf,",&x._x[j]);
    }
}  

хорошо, это работает, фактически читает все три вектора.Тем не менее, я не уверен насчет шаблона чтения.

Мой вопрос в том, можно ли читать каждый вектор с "% lf", так как в конце каждого вектора на самом деле есть "\ n" ине "," .. Было бы лучше прочитать последнюю координату каждого вектора с "% lf \ n"?

спасибо!

1 Ответ

1 голос
/ 21 августа 2010

Ваша проблема связана с тем, что за последним номером не стоит запятая.Таким образом, вы должны сделать что-то вроде

for (i=0; i<NUM; i++) {  //number of vectors to read
    for (j=0; j<DIM-1; j++) {  //length of each vector
        fscanf(fp,"%lf,",&x._x[j]);
    }
    fscanf(fp,"%lf",&x._x[j]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...