好的,所以我试图将这个邻接矩阵写入这个文本文件,但我的代码只是编写邻接矩阵的第一个值。
而不是fprint
我使用简单的printf
进行了检查并且工作正常,但我无法理解在.txt
文件中打印相同内容会出现什么问题
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXVERTICES 10
int main(){
FILE* fp = fopen("input.txt", "r");
int **mat;
int num[100];
int i,v,e,j,a,b,u,ne=1,p;
int matrix[MAXVERTICES][MAXVERTICES];
int cost[10][10];
int taken[10] = {0}, min, mincost=0;
//printf("ENter");
fscanf(fp, "%d %d", &v, &e);
for (int i = 0; i <e; i++)
{
int v1, v2;
int weight;
fscanf(fp, "%d %d %d", &v1, &v2, &weight);
matrix[v1][v2] = matrix[v2][v1]=weight;
// printf("%d", weight);
}
//printf("Check 0");
FILE* f;
for (int i = 0; i<v; i++){
for (int j = 0; j<v; j++){
f=fopen("adjacency.txt", "w");
fprintf(f,"%d", matrix[i][j]);
}
fprintf(f,"\n");
}
fclose(f)
return 0;
}
答案 0 :(得分:1)
你没有fopen()
循环内的文件,你只需要fopen()
一次文件,检查它是否打开,然后fprintf()
到它循环。
像这样修复你的程序
FILE* file;
file = fopen("adjacency.txt", "w");
if (file != NULL)
{
for (int i = 0; i<v; i++)
{
for (int j = 0; j<v; j++)
{
fprintf(f,"%d", matrix[i][j]);
}
fprintf(f,"\n");
}
}