为什么值传不过去

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:59:43
我从文件里读入一个数赋值给给定的数GA.adj[i].length和GA.adj[i].speed,最后发现值没有传过去(注:程序前初始化GA.adj[i].speed=0,GA.adj[i].length=1000)GA具体表示的为邻接矩阵表示的图
if((fp=fopen("input.txt","r+"))==NULL)
{
cout<<"Cannot open this file!"<<endl;
exit(0);
}

fscanf(fp,"%d",&totalvex);//读入文件里的第一个数
cout<<"totalvex"<<totalvex<<endl;
initGraph(GA,totalvex);//初始化
fscanf(fp,"%d",&a);
while(a!=-1)//-1为结束符标志
{

//printf("a %d ",a);
fscanf(fp,"%d",&b);
//cout<<"b "<<b<<' ';
cout<<"(a,b)"<<"-->"<<"("<<a<<","<<b<<")"<<endl;
fscanf(fp,"%d",&GA.adj[a*totalvex+b].length);
cout<<"a*totalvex+b="<<a*totalvex+b<<endl;

fscanf(fp,"%d",&GA.adj[a*totalvex+b].length);
fscanf(fp,"%d",&GA.adj[a*totalvex+b].speed);
把上面的两句话改为:
fscanf(fp,"%d",&(GA.adj[a*totalvex+b].length));
fscanf(fp,"%d",&(GA.adj[a*totalvex+b].speed));
而且文件中,两个整数之间最小有一个空格
如:15 66

典型的C和C++的杂交代码啊
你的程序在赋值给GA.adj[i].length和GA.adj[i].speed之前都是正常的吗?

你肯定是先学了c,后学了 c++ ,弄得自己编程时用的既不是c也不是c++

你肯定是先学了c,后学了 c++ ,弄得自己编程时用的既不是c也不是c++
fscanf(fp,"%d",&GA.adj[a*totalvex+b].length);
fscanf(fp,"%d",&GA.adj[a*totalvex+b].speed);
把上面的两句话改为:
fscanf(fp,"%d",&(GA.adj[a*totalvex+b].length));
fscanf(fp,"%d",&(GA.adj[a*totalvex+b].speed));
而且文件中,两个整数之间最小有一个空格
如:15 66