首页 文章

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

提问于
浏览
1

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

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

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

我想将它们传递给函数

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

用一个简单的

print_results(que1,indoc);

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

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

帮助将不胜感激

谢谢

3 回答

  • 1

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

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

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

    因为它是一个chars数组的数组,你可以将它衰减为一个指针数组(每个指针代表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
    
    
    }
    

    柔软的

  • 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");
    }
    

相关问题