我有一個非常大的雙精度數字數組...我試圖用fprintf()將它寫入文件中...我需要在每行中寫入這些數字所以我做了這樣的事情。把數組寫入文件的問題
if((fp2 = fopen("temp", "w")) == NULL) { perror("File cannot be opened"); exit(1); }
for(int k = 0; k < j; k++)
{
fprintf(fp2, "%0.3lf\n", diff[k]);
}
但是,有一個問題,它寫入的數據達到一定數量的行後,我給所有的零。例如
3.040
0.700
-2.740
0.000
0.000
0.000
0.000
0.000
0.000
我真的不明白可能是什麼問題。爲什麼當數組中有值時,它將所有值寫爲0.000。
這裏是差異如何實現,如果它有幫助。
diff = (double *)malloc(fileSize);
diff[0] = data[0];
for(j = 1; j < n; j++)
{
diff[j] = data[j] - data[j-1];
}
來自文件的值存儲在data []中。然後我計算了data []中的相鄰值的差異,並將其寫回到另一個文件中。 fileSize是原始文件的大小。並且我確信diff []中的所有值都正確填充。
你怎麼知道有一些值?你是否在'fprintf()'上使用了一個斷點並且實際檢查了這個數組的內容? – viraptor 2009-12-07 16:39:01
你確定tehre裏面至少有j個元素嗎? – 2009-12-07 16:39:10
在格式說明符中將小寫'l'更改爲大寫'L'。 – 2009-12-07 16:40:35