请帮我修改代码,使其能正常运行int File(G *g){ int i,j; FILE* fp=fopen("C:\\Users\\bai10\\Documents\\map.txt","r"); if(fp==NULL) { printf("无法打开文件\n"); exit(0); } else { while(!feof(fp)) { for(i=0;i<g->vexnum;i++) { for(j=0;j<g->vexnum;j++) { fscanf(fp,"%d",&(g->arcs[i][j])); } } } fclose(fp); return 0; } } int main(){ G g; File(&g); return 0; }
时间: 2023-06-15 16:05:55 浏览: 107
这份代码中存在一些问题。首先,文件中的数据应该按照一定的格式排列,否则读取的数据将会出现错误。其次,在读取数据的时候,应该使用while循环,而不是for循环。最后,在读取完成后应该关闭文件指针。
下面是修改后的代码:
```
int File(G *g){
int i,j;
FILE* fp=fopen("C:\\Users\\bai10\\Documents\\map.txt","r");
if(fp==NULL){
printf("无法打开文件\n");
exit(0);
}else{
while(!feof(fp)){
for(i=0;i<g->vexnum;i++){
for(j=0;j<g->vexnum;j++){
fscanf(fp,"%d",&(g->arcs[i][j]));
}
}
}
fclose(fp); // 关闭文件指针
return 0;
}
}
int main(){
G g;
memset(&g, 0, sizeof(G)); // 初始化图
g.vexnum = 10; // 假设顶点个数为10
File(&g);
return 0;
}
```
请注意,这里假设顶点个数为10,如果实际情况不同,需要相应地修改。另外,这里使用了memset函数来初始化图,你需要确保你的代码中也有类似的初始化操作。
阅读全文