簡體   English   中英

從文件讀入2D數組會在C中返回錯誤的值?

[英]Reading from a file into 2D array returns wrong values in C?

所以我有一個簡單的程序,可以從文件中讀取值,然后只想將它們打印到屏幕上。 當陣列打印到屏幕上時,會發生此問題。 它在數組中間添加了一些隨機數。 有人知道出什么問題嗎?

這是輸出: 在此處輸入圖片說明

這是我的代碼:

#include <stdio.h>
#include <stdlib.h>

#define MAXROW 10
#define MAXCOL 12

int main(void) {
    int i,j;

    char numbers[MAXROW][MAXCOL];


    FILE *file;  /*  FILE pointer  */
    file = fopen("data.txt", "r");  /* open a text file for reading */


    for(i=0;i<MAXROW;i++){
      for(j=0;j<MAXCOL;j++){
          fscanf(file, "%d\t", &numbers[i][j]);
          if(numbers[i][j] == '\n')
                i++;
          }
    }

    for (i=0; i<MAXROW; i++) {
      printf("\n");
        for (j=0; j<MAXCOL; j++) {
            printf("%d ",  numbers[i][j]);
        }
    }
    fclose(file);
    return 0;
}

這是我的data.txt文件: 在此處輸入圖片說明

將循環更改為

for(i=0;i<MAXROW;i++)
  for(j=0;j<MAXCOL;j++)
      fscanf(file, "%d%*c", &numbers[i][j]);

數字[i] [j]將永遠不會獲得'\\ n'的值,因為它僅在使用%d時才匹配整數

而是使用fgets()一次獲取一行,然后使用sscanf()獲取該行上的每個整數。

在您的代碼中,我懷疑您是否遇到這種情況if(numbers [i] [j] =='\\ n')。 因此,您正在循環到最大值並存儲垃圾值。 逐行讀取並解析單個數字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM