C语言 如何使用传递的指针指向字符数组



我是C和PRO*C的biginner,需要一些帮助。我有一个如下的结构:

typedef struct pt_st{
   char (*s_no)[100];
   char (*s)[100];
} pt_st;

有一个像c_info这样调用post函数的函数:

int c_info(pt_st ir_st)
{
  int   li_result = 0;
  li_result = post(ir_st.s_no)
} 

和post函数是:

int post(char (*s_no)[100])
{
  EXEC SQL FOR 100
  insert into table_1(col1)
  values(values from the array); //I want to read one value each time in the loop and insert
}

"来自数组的值"应该是什么?

多谢!

如果s_nochar (*)[100]类型,则s_no[i]char*类型。

要将其作为数组插入,可以使用Host arrays:

可以在INSERT语句中使用主机数组作为输入变量。只要确保您的程序之前用数据填充数组即可执行INSERT语句

如果数组中的某些元素是不相关的,可以使用FOR子句来控制插入的行数。参见"使用FOR"条款"。

使用主机数组插入的示例如下:

char   emp_name[50][20];
int    emp_number[50];  float  salary[50]; 
/* populate the host arrays */  
   EXEC SQL INSERT INTO EMP (ENAME, EMPNO, SAL) 
    VALUES (:emp_name, :emp_number, :salary);

(From docs.oracle.com on PRO*C)

所以这里我认为你可以简单地使用:

values (:s_no )

如果这不起作用,这意味着你必须指定你的字符串的大小(我认为你应该,因为你的列不是无限的大小)

最新更新