C - 来自文件的矩阵

时间:2017-10-22 19:43:10

标签: c

我知道有很多关于"在C"中从文件加载矩阵的问题和答案。但我有一个问题和疑问。

我的代码看起来像这样:

for(int i=0; fgets(buffer_char, 256, file); i++) {
    tmp_char = strtok(buffer_char, " \t");

    for(int j=0; tmp_char != NULL; j++) {
        printf("%s ", tmp_char);
        strtod(tmp_char, array[i][j]);
        tmp_char = strtok(NULL, " \t");
    }
}

我输入文件的矩阵如下:

3
1 2 3
4 5 6
5 6 7

我试图将其加载到数组中,但我必须检查输入值是否正确。我的问题是,我怎样才能做得更好?哪种解决方案会更正确?

@edit:

我将代码修改为:

for(int i=0; fgets(buffer_char, 256, file); i++) {
    array[i][0] = strtod(buffer_char, &tmp_char);
    for(int j=1; tmp_char == NULL; j++) {
        array[i][j] = strtod(tmp_char, &tmp_char);
    }
}

它有效,我想要什么,但仅适用于新线的第一个元素。我知道,问题出在" array [i] [j] = strtod(tmp_char,& tmp_char);",但我不知道该怎么做。

1 个答案:

答案 0 :(得分:1)

您只需使用fscanf验证并将输入存储到数组中即可。

代码:

  if((check=fscanf(fp,"%d",&n))==1)
  {

    int Arr[n][n];
    for(int i=0; i<n; i++) {
      for(int j=0;j<n;j++){
         fscanf(fp,"%d",&Arr[i][j]);
         printf("%d ",Arr[i][j]);
      }
      printf("\n");
  }
} 
相关问题