[英]Read integers from file in C
1 2 3 4 5
1 2 3 4 5
1 2 3
2 5 7 8 9 8
我是C的初學者,我想編寫一個小程序,但是有這個問題。
問題是:如果有一個文件包含整數,則每行的整數數是不同的,但都在最大整數數之內。
例如,上面的整數,每行的最大整數數是6,每行可以有1到6個整數。 每個文件的最大整數數也將改變。
如何將這些數字存儲到2D數組中? 或者將整數逐行存儲到數組中。 (不用擔心空值)
我嘗試使用fscanf
,但是我不知道如何定義每個讀數的整數數量。
===========================“
#define MAX_SIZE_BUFFER 1000
FILE *file;
int len = MAX_SIZE_BUFFER;
char sLine[MAX_SIZE_BUFFER];
int i, j, maxnumber = 6;
int *numbers, *temp;
char *sTok;
numbers = (int *) malloc(sizeof(int) * maxnumber);
for (i = 0; i < maxnumber; i++) {
numbers[i] = -1;
}
while (fgets(sLine, len, file) != NULL) {
i = 0;
sTok = strtok(sLine, " ");
while (sTok != NULL) {
numbers[i] = atof(sTok);
sTok = strtok(NULL, " ");
i++;
}
/* This temp stores all the numbers of each row */
temp = (int *) malloc(sizeof(int) * i);
for (j = 0; j < i; j++) {
temp[j] = numbers[j];
}
}
上面的代碼尚未完成,但是這就是我執行此操作的想法。
讓我們嘗試: fscanf(fp, "%d", value)
fp:文件指針。
“%d”:要讀取的值的格式(可以是%c,%f,...)。
值:使用它來保留剛從文件中讀取的值。
當然,如果要讀取文件中的所有內容,則應將其放入循環中。 EOF
是打破循環的條件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.