在新文件中打印文本错误

时间:2015-05-27 14:57:32

标签: c

好的,所以我试图将这个邻接矩阵写入这个文本文件,但我的代码只是编写邻接矩阵的第一个值。

而不是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;
}    

1 个答案:

答案 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");
     }
 }