簡體   English   中英

將文件中的數據讀入數組

[英]Reading in data from a file into an array

如果我有這樣的選項文件:

size = 4
data = 1100010100110010

我想要將2d size * size數組填充到數據中,最好的方法是什么?

澄清一下,對於這個例子,我想要一個這樣的數組:

int [4] [4]數組= {{1,1,0,0},{0,1,0,1},{0,0,1,1},{0,0,1,0}} 。 (不是真正的代碼,但是您可以理解)。

大小實際上可以是任何數字。

我在想我必須讀取大小,對數組進行錯誤處理,然后也許讀入一個充滿數據的字符串,然后遍歷數據中的每個字符,將其轉換為int並將其粘貼在適當的索引中? 但是我真的不知道該怎么做,一直在尋找一會兒沒有運氣。

任何幫助都將很酷! :)

循環。

FILE *fp = fopen("waaa.txt", "r");
if(fp == null) { /* bleh */ return; }

int j = 0;
while(char ch = fgetc(fp)) {
    for(int i = 0; i < 4; ++i) {
        array[j][i] = ch;
    }
    ++j;
}

我不確定fgetc()的語法。只需檢查一下即可。 它一次讀取一個字符。

int process_file(int **array, char const *file_name)
{
    int size = 0;
    FILE *file = fopen(file_name, "rt");
    if(fp == null)
        return -1;//can't open file
    char line[1024]; //1024 just for example
    if(fgets(line, 1024, file) != 0)
    {
        if(strncmp(line, "size = ", 7) != 0)
        {
            fcloes(file);
            return -2; //incorrect format
        }
        size = atoi(line + 7);
        array = new int * [size];
        for(int i = 0; i < size; ++i)
            array[i] = new int [size];
    }
    else
    {
        fclose(file);
        return -2;//incorrect format
    }
    if(fgets(line, 1024, file) != 0)
    {
        if(strncmp(line, "data = ", 7) != 0)
        {
            fcloes(file);
            for(int i = 0; i < size; ++i)
                delete [] array[i];
            delete [] array;
            return -2; //incorrect format
        }
        for(int i = 7; line[i] != '\n' || line[i] != '\0'; ++i)
            array[(i - 7) / size][(i - 7) % size] = line[i] - '0';
    }
    else
    {
        fclose(file);
        for(int i = 0; i < size; ++i)
            delete [] array[i];
        delete [] array;
        return -2; //incorrect format
    }
    return 0;
}

程序結束前不要忘記刪除數組;

暫無
暫無

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

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