# include & ltstdio.h & gt
# include & ltstring.h & gt
#定義MAX_NAME_LEN 80
typedef結構路由器
{
char destination[MAX _ NAME _ LEN];
int距離;
char next hop[MAX _ NAME _ LEN];
char NAME[MAX _ NAME _ LEN];
};//路由器結構定義
路由器PRx[1000],PRy[1000];
int r=0,n = 0;
int Dis_vector(char f1[],char f2[])
{
FILE * FP 1;
FILE * fp2
int I = 0;
if ((fp1 = fopen(f1," a")) == NULL||(fp2 = fopen(f2," r+")= = NULL)
返回0;
while(我& ltn){
(撬[我]。距離)++;撬,撬,撬。下壹步,窺探[我]。姓名);i++;}//路由器Y的路由更新
I = 0;
while(我& ltr){
如果(!strcmp(PRx[i].目的地,撬[我]。目的地){
fscanf(fp1," %s%d%s ",PRy[i]。目的地。(撬[我]。距離),撬【我】。next hop);i++;返回1;}//比較目的地址
else if(!strcmp(PRx[i].下壹步,窺探[我]。nexthop)){
PRx[i]。距離=撬[i]。距離;i++;返回1;}//比較下壹跳
else if(PRx[i].距離& gt窺探[我]。距離){
PRx[i]。距離=撬[i]。距離;strcpy(PRx[i].下壹步,窺探[我]。next hop);i++;返回1;}//比較距離
}
}//距離矢量算法
int input_r(char f[])
{
FILE * fp
int I = 0;
if ((fp = fopen(f," r))= = NULL)
返回0;
fscanf(fp," %s ",PRx[0]。姓名);
而(!feof(fp))
{
fscanf(fp," %4s%4d%4s ",PRx[i]。目的地。(PRx[i]。距離),PRx[i]。next hop);
i++;
}
r = I;
if ( fclose(fp))
返回0;
返回1;
}//讀取路由器x的路由表。
int input_n(char f[])
{
FILE * fp
int I = 0;
if ((fp = fopen(f," r))= = NULL)
返回0;
fscanf(fp," %s ",PRy[0]。姓名);
而(!feof(fp))
{
fscanf(fp," %4s%4d%4s ",PRy[i]。目的地。(撬[我]。距離),撬【我】。next hop);
i++;
}
n = I;
if ( fclose(fp))
返回0;
返回1;
}//讀取路由器y的路由表。
int輸出(char f[])
{
FILE * fp
int I = 0;
if ((fp = fopen(f," w))= = NULL)
返回0;
fprintf(fp," %s\n ",PRx[0]。姓名);
while(我& ltr)
{
fprintf(fp," %4s%4d%4s\n ",PRx[i]。目的地,PRx[i]。距離,PRx[i]。next hop);
i++;
}
if ( fclose(fp))
返回0;
返回1;
}//輸出X路由器更新後的路由表。
int main()
{
if(input _ r(" e:\ \ input _ r . txt ")= = 1)
{
if(input _ n(" e:\ \ input _ n . txt ")= = 1)
{
if ( Dis_vector("e:\\input_r.txt "," e:\\input_n.txt")== 1)
{
output(" e:\ \ output _ prx . txt ");
printf("Dis_vector成功!\ n ");
}
}
}
}