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