for(j=0;j<nodes;j++){
//changes source node from number to charcter
if(j==0){char nod[1] = "A";}
else if(j==1){char nod[1] = "B";}
else if(j==2){char nod[1] = "C";}
else if(j==3){char nod[1] = "D";}
else if(j==4){char nod[1] = "E";};
int d = rt[i].from[j]+1;
if(d==1){char nod[1] = "A";}
else if(d==2){char next[1] = "B";}
else if(d==3){char next[1] = "C";}
else if(d==4){char next[1] = "D";}
else if(d==5){char next[1] = "E";};
printf("\t\n %s %d %s ",nod,rt[i].dist[j],next);
}
这两个字符串的打印输出相同,然后打印出来并且根本不打印出来。 即。
For router A
A 0 A
B 2 B
C 3 C
C 5 C
B 5 B
应该是这样的:
For router A
A 2 A
B 0 B
C 4 C
D 4 C
E 3 B
感谢任何帮助,谢谢。
答案 0 :(得分:1)
您在每个if块中重新声明nod
和next
,当块结束时,它们将超出范围。
因此,您不打印已修改的nod
或next
,而是在此for
循环开始之前声明的那个。
您不需要nod
或next
来打印这些值,您可以直接打印它们,或者
for(j=0;j<nodes;j++)
{
int d = rt[i].from[j] + 1;
printf("\t%c %d %c\n", 'A' + d - 1, rt[i].dist[j], 'A' + d - 1);
}
会给你你想要的输出。