Мне дан файл как таковой, instance10_002. Я пытаюсь сохранить точки данных MST в структуру, которую я создал. Из моих отладочных команд printf
я вижу, что я успешно выполнил итерацию через файл и достиг своих точек данных MST.Increment sscanf() в цикле do..while и хранить строки в структуре
Вот мой код:
void collect_edges(char filename[31])
{
int counter = 0, check = 0;
char c, str[64];
int index;
input_file = fopen(filename, "r");
if (input_file == NULL)
{
printf("Input file does not exist\n");
exit(1);
}
while (fgets(str, 64, input_file))
{
c = str[0];
if (c != '#' && c != '\n')
{
counter++;
printf("Check for counter\n");
if (counter == 2)
{
printf("Check Check\n");
sscanf(str, "%d", &num_pt);
printf("Check for counter 2\n");
index = num_pt + 3;
}
if (counter == (index))
{
printf("Check for counter 13\n");
printf("Counter is: %d\n", counter);
do {
sscanf(str, "%d %d %d", &points[counter-index].parent, &points[counter-index].x, &points[counter-index].distance_to_tree);
check++;
counter++;
} while (check <= num_pt - 2);
break;
}
}
}
fclose(input_file);
}
Я использовал do..while
петли для хранения всех точек данных MST в мои структуры, но когда я иду к ним доступ, он печатает 0 9 45
, который 0th index
моей структуры, а не правильные данные для всех индексов.
Выход по следующему методу:
collect_edges(argv[inputfile]);
printf("%d\n", points[3].parent);
printf("%d\n", points[3].x);
printf("%d\n", points[3].distance_to_tree);
правильный вывод, как показано в файле экземпляра:
Первоначально я думал, что мой счетчик не увеличивается в моем do..while
циклах, но я включил приращение, и теперь он сканирует первую строку данных MST и сохраняет ее во всех индексах структуры. Есть ли способ увеличить функцию sscanf
для увеличения и сканирования всех остальных линий точек данных?