ファイルはinstance10_002のように指定されています。私はMSTデータポイントを私が作成した構造体に格納しようとしています。私のデバッグprintf
ステートメントから、私は正常にファイルを反復して私のMSTデータポイントに到達したことがわかります。ここでdo..whileループ内でsscanf()をインクリメントし、構造体に行を格納します。
は私のコードです:
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);
}
私は構造体にすべてのMSTデータポイントを保存するdo..while
ループを使用しているが、私はそれらにアクセスするために行くとき、それはある、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
関数を増分して、データポイントの他のすべてのラインをスキャンする方法はありますか?