C for循环突然停止

C for loop suddenly stops

我正在尝试读取图中两个节点之间的距离并将其存储在数组中,但循环没有按预期工作。突然停了

Output:
Edge Number: 4
Enter distance between two nodes, Example: A B 10 
A C 3
A B 2
C B 2

...Program finished with exit code 0
Press ENTER to exit console.

例如,当edgeNumber为4时,它停在3。这是我的代码。提前致谢。

Code:

#include <stdio.h>
#define S 50

int main(){
    
    int  dist[S][S], edgeNumber, i, temp;
    char node1, node2;
    
    
    printf("Edge Number: ");
    scanf("%d", &edgeNumber);
    
    
    printf("Enter distance between two nodes, Example: A B 10 \n");
    for(i = 0; i < edgeNumber; i++){
        scanf("%c %c %d", &node1, &node2, &temp);
        dist[((int)node1) - 65][((int)node2) - 65] = temp;
        dist[((int)node2) - 65][((int)node1) - 65] = temp;
    }
    
    return 0;
}

只需重写 scanf

的这个调用
scanf("%c %c %d", &node1, &node2, &temp);
      ^^^

喜欢

scanf( " %c %c %d", &node1, &node2, &temp);
       ^^^

格式字符串中的前导 space 允许跳过输入缓冲区中的白色 space 字符,包括换行符 '\n'.

此外,使用像 65 这样的幻数也是个坏主意。您应该检查输入的字符是否为字母,并将它们转换为大写。否则你的代码是非常不安全的。您还应该测试调用 scanf.

的结果