[問題] fopen讀相同檔名 (已解決)

作者: totemist (totem)   2015-05-31 17:54:46
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
code::block
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
matlab
問題(Question):
fopen對於同樣的檔名不會自動讀最新的
餵入的資料(Input):
matlab生成一筆data 名稱叫point.txt
預期的正確結果(Expected Output):
fopen讀最新的一筆data
錯誤結果(Wrong Output):
還是停留在上一筆data
程式碼(Code):(請善用置底文網頁, 記得排版)
float z;
int k;
FILE *fptr;
if((fptr=fopen("point.txt","r"))!=NULL)
{
for (k=0;k<3200;k++){
fscanf(fptr,"%f",&z);
input[k] = z;
printf("%f\n",input[k]);
}
}
fclose(fptr);
補充說明(Supplement):
就是我因為方便,所以每次在matlab調變參數後的結果,都存在point.txt這個檔案
反正相同檔名就意同直接把舊的覆蓋
所以我以為C的fopen也是會直接讀最新的point.txt
結果後來檢驗過程中還是只讀到上一筆已經被覆蓋掉的point.txt
自行解決的方法就是在matlab存成檔案的時候就存成不同名字,這樣C就可以讀到
但是麻煩點就在這樣每次存檔案,讀取檔案都要手動改檔案名稱
謝謝大大
作者: Feis (永遠睡不著 @@)   2015-05-31 21:10:00
這情況蠻有趣的. 可以請問詳情嗎. 例如你怎麼知道有覆蓋你 C 的部分是獨立程式? 在 Matlab "後" 執行?
作者: EdisonX (卡卡獸)   2015-05-31 22:13:00
聽起來像是 c 那裡要收到通知或延遲或其他機制再讀檔雖然感覺不太可能..matlab 產生的 point.txt , 和 C 讀到的 point.txt , 確定是同一個(路徑是一樣的)嗎?另外小挑一下下,fclose 要放在 if 裡面.
作者: Feis (永遠睡不著 @@)   2015-05-31 23:37:00
意思是你 Matlab 跑完->打開point.txt 是新的-> C開起來是舊的?
作者: remizu (remizu)   2015-06-01 05:04:00
matlab不太熟 不過fopen的'a'是append 每次新資料都寫在檔案最後 而讀取則是從頭讀 所以每次都會讀到前3200筆一樣的資料所以我猜應該是像F大猜想的 沒有"覆蓋"

Links booklink

Contact Us: admin [ a t ] ucptt.com