У меня есть входной файл:
H
3(3,3)
V
1(5,4)
2(7,7)
Я читаю это с:
12 FILE *fp = fopen (argv[1], "r");
13 if (fp == NULL)
14 {
15 return EXIT_FAILURE;
16 }
17 Stack* top = NULL;
18 char gets[1024];
19 while (fgets (gets, 1024, fp))
20 {
21 char node;
22 int width = 0;
23 int height = 0;
24 int check = (sscanf (gets, " %c(%d,%d", &node, &width, &height));
25 if (check == 1)
26 {
27 push(&top,node,0,0);
28 }
29 else if (check == 3)
30 {
31 push(&top,node,width,height);
32 }
33 }
34 fclose (fp);
Что отлично работает.
1 3(3,3)
2 1(5,4)
3 2(7,7)
4 V
5 H
Но когда я читаю что-то вроде этого (ввод сокращен, поскольку файл большой):
1 93(11,16)
2 11(12,33)
3 H
4 34(7,11)
5 10(9,27)
6 V
7 32(12,30)
8 30(12,16)
9 41(12,19)
10 H
11 V
12 50(12,13)
Я получаю это, например:
1 9(0,0)
2 1(0,0)
3 H
4 3(0,0)
5 1(0,0)
6 V
7 3(0,0)
8 3(0,0)
9 4(0,0)
10 H
11 V
12 5(0,0)
Как я могу исправить эту ошибку, чтобы поставить правильный вывод - поэтому я получаю правильное значение узла вместо 9 например вместо 93. Изменить: Это не работает, я получаю что-то вроде этого:
20 45(11,16)
21 45(11,16)
22 45(11,16)
23 45(11,16)
24 45(11,16)
25 45(11,16)
26 45(11,16)
27 45(11,16)
28 45(11,16)
29 45(11,16)
30 45(11,16)
31 45(11,16)
32 45(11,16)
33 45(11,16)
34 45(11,16)
35 45(11,16)
36 45(11,16)
37 45(11,16)
38 45(11,16)
39 45(11,16)
40 45(11,16)
41 45(11,16)
42 45(11,16)
43 45(11,16)
44 45(11,16)
45 45(11,16)
46 45(11,16)
47 45(11,16)
, который даже не ввод.