簡體   English   中英

從文件讀取到C中的數組

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

我的文件包含一系列數字(整數,浮點數,整數,浮點數....),每個數字都寫在單獨的行上。 每一行的列數不同,即

1 2.45 3 1.75

5 3.45 7 2.55 9 3.25

6 1.75 4 3.55 6 2.55 9 2.45

程序應讀取整個文件的內容,並將數據放入float類型的數組中,並在每行中添加一個條目。 這是我的基本解決方案,但這僅在我固定沒有列的情況下才適用。

float Read(FILE *pFile)
{
 char line[50]; char letter[5];
 fi = fopen("file.txt", "r");

 while (fgets(line,200,fi)!=NULL)
 {

    sscanf(line,"%f %f %f",&a[i], &a2[i],&a3[i]);
     printf("%2.0f %2.5f %2.0f\n",a[i],a2[i],a3[i]);
}

fclose(fi);
return a[i];
}

請幫忙。

使用這樣的東西。 如果您需要可重入的代碼,請參見man strtok_r

#define MAX_BUFFER 200

float Read(FILE* pFile)
{
    char line[MAX_BUFFER];

    while(fgets(line, MAX_BUFFER, pFile) != NULL)
    {
        char* ptr = strtok(line, " ");

        while(ptr != NULL)
        {
            printf("2.5f ", (float)atof(ptr));
            ptr = strtok(NULL, " ");
        }

        printf("\n");
    }
}

請注意,您編寫了line [50],但在fgets()中讀取了200,即潛在的緩沖區溢出。 甚至沒有聲明“ i”,也從未使用過pFile。

查找strtok並標記化。

確保考慮好幾件事,例如確定所需陣列的長度(內存管理),跟蹤陣列中的位置等。

暫無
暫無

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

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