[英]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.