C语言数据结构课设 遇到的问题 希望求教各位大佬

问题遇到的现象和发生背景

定义了一个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);

}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

因为你的flag.txt不存在,fopen的r属性只负责打开,不负责创建,所以文件不存在就会报错