楼主:
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就可以读到
但是麻烦点就在这样每次存盘案,读取档案都要手动改档案名称
谢谢大大
作者:
EdisonX (卡卡兽)
2015-05-31 22:13:00听起来像是 c 那里要收到通知或延迟或其他机制再读档虽然感觉不太可能..matlab 产生的 point.txt , 和 C 读到的 point.txt , 确定是同一个(路径是一样的)吗?另外小挑一下下,fclose 要放在 if 里面.
作者: remizu (remizu) 2015-06-01 05:04:00
matlab不太熟 不过fopen的'a'是append 每次新资料都写在档案最后 而读取则是从头读 所以每次都会读到前3200笔一样的资料所以我猜应该是像F大猜想的 没有"覆蓋"