我正在try 用C语言创建一个DVR模拟.我知道我需要一个嵌套的for循环,但每当我编译和运行程序时,在输入系统中的路由数量后,它都会产生分段错误.编译器没有生成任何错误或警告.任何帮助都将不胜感激.下面的代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
int targetRouter[1024];
int nextRouter[1024];
int cost[1024];
}routers;
routers *routerSet[1024];
int main(){
int numberOfRouters;
char buffer[1024];
printf("How many routers are in this network?\n");
fgets(buffer, 1024, stdin);
numberOfRouters = atoi(buffer);
for(int i = 0; i < numberOfRouters; i++){
for(int k=0; k<numberOfRouters; k++){
if(i == k){
routerSet[i]->targetRouter[k] = i;
routerSet[i]->nextRouter[k] = i;
routerSet[i]->cost[k] = 0;
}
else{ //different router
printf("Is router number %d directly connected to router number %d (y/n)?", i, k);
scanf("%s\n", buffer);
if(strncmp(buffer, "y", 1) == 0){
bzero(buffer, sizeof(buffer));
routerSet[i]->targetRouter[k] = k;
routerSet[i]->nextRouter[k] = k;
printf("What is the delay between router number %d and router number %d?", i, k);
fgets(buffer, 1024, stdin);
routerSet[i]->cost[k] = atoi(buffer);
}
else if(strncmp(buffer, "n", 1) == 0){
routerSet[i]->targetRouter[k] = k;
routerSet[i]->nextRouter[k]=-1;
routerSet[i]->cost[k] = -1;
}
else{
printf("Invalid input. Ending program.");
exit(0);
}
bzero(buffer, sizeof(buffer));
}
}
}
for(int i = 0; i < numberOfRouters; i++){
printf("Router table for router number %d", i);
for(int k=0; k < numberOfRouters; k++){
printf("%d | %d | %d\n", routerSet[i]->targetRouter[k], routerSet[i]->nextRouter[k], routerSet[i]->cost[k]);
}
}
}
请注意,此程序尚未完成.我只是不能继续在程序的其余部分工作,直到这个错误被修复.