C打印两个字符串的字符串的第二个值

时间:2015-04-28 02:30:09

标签: c string printf

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 

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您在每个if块中重新声明nodnext,当块结束时,它们将超出范围。

因此,您不打印已修改的nodnext,而是在此for循环开始之前声明的那个。

您不需要nodnext来打印这些值,您可以直接打印它们,或者

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);
}

会给你你想要的输出。