Store a Vector as csv-File in a Mex File

1 次查看(过去 30 天)
Hi guys,
I have a small Problem with storing a Vector as CSV-File using a mex function. I my goal is an nice and tidy implementation. For that reason I tried the following code:
mdlStart
FILE *PtrTextID = ssGetPWork(S,3);
PtrTextID = fopen("Storage.txt", "w");
mdlUpdate
FILE *PtrTextID = ssGetPWork(S,3);
fprintf(PtrTextID, "Test");
mdlTerminate
FILE *PtrTextID = ssGetPWork(S,3);
fclose(PtrTextID);
This code leads to a Matlab crash. But if I'm using
mdlUpdate
FILE *PtrTextID
PtrTextID = fopen("Storage.txt", "w");
fprintf(PtrTextID, "Test");
fclose(PtrTextID);
the code works pretty well and do the thinks it's used to. Thats why my guess is that ssGetPWork is not the right workspace to store an FILE-Structure. But what is the right Workspace?
Thanks for your help, CN CN

采纳的回答

Kaustubha Govind
Kaustubha Govind 2012-8-22
ssGetPWork takes only one input argument, and returns a void**. Also you need to initialize the number of PWorks first. I haven't tested this out, but I think your code should look like:
mdlInitializeSizes
ssSetNumPWork(S, 1);
mdlStart
ssGetPWork(S)[0] = (void *)fopen("Storage.txt", "w");
mdlUpdate
FILE *PtrTextID = (FILE *)(ssGetPWork(S)[0]);
fprintf(PtrTextID, "Test");
mdlTerminate
FILE *PtrTextID = (FILE *)(ssGetPWork(S)[0]);
fclose(PtrTextID);
Note: ssGetPWork(S)[0] can be replaced with ssGetPWorkValue(S, 0)
  1 个评论
Christoph
Christoph 2012-8-23
Hi Kaustubha,
tanks for your excellent help. Your code just works perfect. As you mananged in your note I mixed up getting Values from the DWorkSpace and the PWorkSpace.
kind regards, CN

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Low-Level File I/O 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by