Я пытаюсь реализовать цикл, который будет читать строки из файла, пока не найдет строку с определенным форматом.А именно, до тех пор, пока не будет найдена строка с:
цифрой, цифрой, цифрой
и ничем (кроме пробелов или табуляции) до новой строки.В частности, материал, который я должен пройти, пока не найду такую строку, всегда будет содержимым матрицы 'lines.rows', , но ее точки данных не обязательно аккуратно упорядочены в строки 'линий'элементы строкОни могут иметь любое количество пробелов, табуляции или новых строк между каждым элементом.
Однако после элементов lines.rows всегда будет строка в формате, который я сканирую, после произвольного количества пробелов,табуляции или перевода строки после последнего элемента матрицы.
Я пытался в течение нескольких часов использовать fgets и fscanf по-разному для достижения этой цели, но вывод просто не правильный.Прямо сейчас у меня есть это:
for (i=0;i<lines;i++)
{
for(j=0;j<rows;j++)
{
fscanf(in_fp, "%d", &temp);
}
}
, который работает, но занимает слишком много времени в больших матрицах.Помимо этого я пробовал, например,
for (i=0;i<lines;i++)
{
fscanf(in_fp, "%*[^\n]\n", NULL);
}
, который не работал.Идея заключалась в том, чтобы перейти к концу каждой строки, а затем также прочитать новую строку, чтобы начать в начале следующей строки.Однако к концу этого цикла мой файл не указывал на правильную строку (которая будет с форматом, указанным выше -% d% d% c% d).Вместо этого он указывал на «случайную» строку в середине матрицы.
Я также попробовал тот же код, что и выше, но с fgets.Когда я запустил fscanf, следуя циклу fgets для всех строк матрицы, я все равно не прочитал строку, которая должна идти дальше (с указанным выше форматом).
Если у вас есть какие-либо входные данные накак этого добиться или как сделать этот вопрос более понятным, я был бы очень благодарен.