簡體   English   中英

從C中的文件讀取2個整數

[英]Reading 2 integers from a file in c

我的代碼要求我打開一個文件。 文件的第一行包含1到1000之間的2個整數。我必須讀取這2個數字,並使用它們創建與這些數字相對應的2D數組(例如50,200是-array [50] [200])。 創建此數組后,我必須讀取文件的其余部分並存儲數據(該數據在2個數字的維數網格中設置)。

最好的方法是什么。 我考慮過做一個getline,然后做一個for循環,將chars附加到row然后column,然后轉換為int,但是我的編譯器不斷出現錯誤。

文件是二進制文件還是文本文件? 如果是二進制,請使用fread,它將使您輕松讀取原始字節。 如果其文本使用fscanf

假設輸入始終是這種形式(有點不清楚):

2,4
aaaa
b  b

...那么一種方法是讀取矩陣的尺寸(行數,列數),然后通過一次讀取一個字符來讀取矩陣的每個元素。 可能是這樣的:

int rows = getchar();

// Skip ','.
getchar();

int cols = getchar();

int arr[ rows ][ cols ];
int r = 0;
int c = 0;

for ( int byte = getchar(); byte != EOF; byte = getchar(), c++ ) {
  if ( c == cols ) {
    c = 0;
    r++;
  }

  arr[ r ][ c ] = byte;
}

...,您將需要將輸入文件通過管道傳輸到程序,如下所示:

./program.out < input.txt

備注:這是為您的特定問題量身定制的,如果滿足以下條件,則將無法使用:輸入不能保證填充整個數組,輸入的大小不正確,尺寸過大等(很多問題)-請確保占那些。

暫無
暫無

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

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