定义了一个char类型的introduce.txt ,用strcpy复制内容 ,用FILE *fp 打不开 或者打开的是空内容
以下是部分代码
void create(graph* g )
{
int i, j;
int m, n, weight;
int vexnum, arcnum;
char name[19], info[66];
for (i = 1; i <= g->vexnum; i++) {//初始化visited值,刚开始都为0
g->vex[i].visited = 0;
}
FILE* fp1;
fp1 = fopen("flag.txt", "rt");
if (fp1 == NULL) {
printf("\n不能打开!1");
exit(1);
}
FILE* fp2;
fp2 = fopen("introduce.txt", "rt");
if (fp2 == NULL) {
printf("\n不能打开!2");
exit(1);
}
FILE* fp3;
fp3 = fopen("adj.txt", "rt");
if (fp3 == NULL) {
printf("\n不能打开!00000");
exit(1);
}
fscanf(fp1, "%d %d", &vexnum, &arcnum);//从文件中顶点的个数和边的个数
g->vexnum = vexnum;
g->arcnum = arcnum;
for (i = 1; i <= g->vexnum; i++) {
fscanf(fp2, "%s\n%s", name, info);
strcpy(g->vex[i].name, name);
strcpy(g->vex[i].info, info);
}
for (i = 1; i <= g->vexnum; i++) {
for (j = 1; j <= g->vexnum; j++) {
g->arcs[i][j] = INFINITY;
}
}
for (j = 1; j <= g->arcnum; j++) {
fscanf(fp3, "%6d %6d %6d", &m, &n, &weight);
g->arcs[m][n] = weight;
g->arcs[n][m] = weight;
}
fclose(fp1);
fclose(fp2);
fclose(fp3);
}
void IntroduceFile(graph g)
{
int i;
char filename[30]="introduce.txt";
FILE* fp;
fp = fopen(filename, "wt");
if (fp == NULL) {
printf("\n不能打开!");
exit(1);
}
g .vexnum = 13;
strcpy(g.vex[1].name, "一道门");
strcpy(g.vex[1].info, "****大学一道门");
//把信息存到文件中
for (i = 1; i <= g.vexnum; i++)
{
fprintf(fp, "%s\n%s\n", g.vex[i].name, g.vex[i].info);
}
fclose(fp);
}
因为你的flag.txt不存在,fopen的r属性只负责打开,不负责创建,所以文件不存在就会报错