在udf中定义数组,将txt文件里面的数据读入数组中
怎么实现?一般的c文件很好实现,代码如下,这个简单的功能怎么在udf中实现?因为不能编译,连FILE *fp1;都识别不了
#include <stdio.h>
#define A_ROW 117
#define A_COLUMN 6
#define INPUT_FILE_NAME "xishu1.txt"
void main()
{
FILE *fp1;
fp1=fopen(INPUT_FILE_NAME,"r");
double temp;
double A;
int i,j;
for(i=0;i<A_ROW;i++)
for(j=0;j<A_COLUMN;j++)
{
fscanf(fp1,"%lf",&temp);
A=temp;
}
} 我也用这个方法,倒是解释通过了,但是在导入模型,最后进行初始化(initialize)时出错,不知为什么。我的程序是这样的:
/********************************/
/*velocity.c*/
#include "udf.h"
DEFINE_PROFILE(velocity,thread,position)
{
face_t f;
real x;
real z;
int i, j;
float u;
FILE* fp;
fp=fopen("V.txt","r");
for (i=0;i<1000;i++)
for (j=0;j<15;j++)
fscanf(fp,"%f",u);
begin_f_loop(f,thread)
{
z=x;
if (z<20)
F_PROFILE(f,thread,position)=u;
else if (z<40)
F_PROFILE(f,thread,position)=u;
else if (z<60)
F_PROFILE(f,thread,position)=u;
else if (z<80)
F_PROFILE(f,thread,position)=u;
else if (z<100)
F_PROFILE(f,thread,position)=u;
else if (z<120)
F_PROFILE(f,thread,position)=u;
else if (z<140)
F_PROFILE(f,thread,position)=u;
else if (z<160)
F_PROFILE(f,thread,position)=u;
else if (z<180)
F_PROFILE(f,thread,position)=u;
else if (z<200)
F_PROFILE(f,thread,position)=u;
else if (z<220)
F_PROFILE(f,thread,position)=u;
else if (z<240)
F_PROFILE(f,thread,position)=u;
else if (z<260)
F_PROFILE(f,thread,position)=u;
else if (z<280)
F_PROFILE(f,thread,position)=u;
else
F_PROFILE(f,thread,position)=u;
}
end_f_loop(f,thread)
}
另外,我发现不少定义的UDF,本来能解释,改变文件夹目录后就不能解释,这是什么原因呢? 可以用另外的方式把数组读进去,
要加一个DEFINE_ON_DEMAND 函数
页:
[1]