簡體   English   中英

從C中的文件讀取整數

[英]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];
    }

}

上面的代碼尚未完成,但是這就是我執行此操作的想法。

解決問題的一種方法是先逐行閱讀(例如使用fgets )。 然后,對於每一行,您需要將“令牌”(整數)分開,例如可以在循環中使用strtok進行操作。 最后,使用例如strtol將每個“令牌”字符串轉換為整數。

讓我們嘗試: fscanf(fp, "%d", value)

fp:文件指針。

“%d”:要讀取的值的格式(可以是%c,%f,...)。

值:使用它來保留剛從文件中讀取的值。

當然,如果要讀取文件中的所有內容,則應將其放入循環中。 EOF是打破循環的條件。

暫無
暫無

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

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