[问题] 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