如何将指针传递给字符串数组(char * p [])?

时间:2012-06-03 19:24:08

标签: c cstring

我想处理一个字符串数组,所以它是一个字符数组的数组

我已经定义了那样的字符串

char que1[4][LEN_STRING]={{'\0'}};

我希望将它们传递给函数

void print_results(char *pqueries[],document p_docs[]);

使用简单的

  print_results(que1,indoc);

产生“预期'char **'但参数类型为'char(*)[30]'”

我甚至不确定我是否实际定义了函数签名,

帮助将不胜感激

感谢

3 个答案:

答案 0 :(得分:1)

数组数组与指针数组不同。请参阅C FAQ更多详细信息:http://c-faq.com/aryptr/pass2dary.html

一种解决方案是修改函数以获取固定宽度的字符串:

void print_results(char (*pqueries)[LEN_STRING],document p_docs[]);

答案 1 :(得分:0)

因为它是一个字符数组的数组,你可以将其衰减             指针数组(每个指针代表char数组的位置)             因此使用它:char ** que1;

 for(int z = 0;z<4;z++)
        {
           *que1[z] = malloc(LEN_STRING*(sizeof(char));
           memset(que1[z], '\0', (size_t)LEN_STRING);

         }

你现在可以这样称呼:

print_results(que1,indoc);

print_results(que1,indoc)的定义将是:

void print_results(char **pqueries,document p_docs[]);
{

//access *[pqueries] in a for loop for each stored character


}

RGDS, 软质皮

答案 2 :(得分:0)

正确的声明/定义将是

void print_results(char pqueries[][LEN_STRING],document p_docs[]);
void print_results(char pqueries[][LEN_STRING],document p_docs[])
{
  ...
  sprintf(pqueries[0],"%.*s",LEN_STRING-1,"blah0");
  ...
  sprintf(pqueries[3],"%.*s",LEN_STRING-1,"blah3");
}