我一直在为simulink编写一个c函数块。我想把我的输出作为一个数组
//
FILE *datafile;
datafile = fopen("datafile.dat","r");
pwork[0] = datafile;
//
//
static void mdlOutputs(SimStruct *S, int_T tid)
{
real_T *y = ssGetOutputPortSignal(S,0);
real_T *a;
real_T *b;
real_T *c;
void** pwork = ssGetPWork(S);
fscanf(pwork[0],"%f %f %f",y[0],y[1],y[2]);
}
//
但它不能那样工作。我猜问题是分配y [1]和y [2] ..
答案 0 :(得分:2)
我不知道Matlab,但我知道scanf
调用的参数应该是指针,除非real_T
被指定为指针它不会起作用。
此外,您正在使用fscanf
用于从FILE
指针读取。
我不知道这是否有效,请尝试这样做:
sscanf(pwork[0], "%f %f %f", &y[0], &y[1], &y[2]);