liuxinyue 发表于 2008-11-6 17:38

在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;
                }
}

东大的祥子 发表于 2008-12-30 10:54

我也用这个方法,倒是解释通过了,但是在导入模型,最后进行初始化(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,本来能解释,改变文件夹目录后就不能解释,这是什么原因呢?

yangwenguang 发表于 2009-1-6 16:10

可以用另外的方式把数组读进去,
要加一个DEFINE_ON_DEMAND 函数
页: [1]
查看完整版本: 在udf中定义数组,将txt文件里面的数据读入数组中