【问题标题】:How to pass a array of strings to a function?如何将字符串数组传递给函数?
【发布时间】:2016-07-26 05:33:17
【问题描述】:

在下面的程序中,我只是尝试将一些字符串复制到数组中并在另一个函数中打印。

我遇到分段错误。有人能指出我做错了什么吗?

  #include <stdio.h>
  #include <string.h>
  #define MAX_STR_LEN 20

  void print_str(char str[][],int count);

  int main()
  {
      char str[2][MAX_STR_LEN];
      strncpy(str[0],"hello",MAX_STR_LEN);
      strncpy(str[1],"world",MAX_STR_LEN);
      print_str(str,2);
      return 0;
  }
  void print_str(char str[][],int count)
  {
      int i;
      for(i=0;i<count;i++)
      printf("%s\n",str[i]);
  }

【问题讨论】:

  • void print_str(char str[][],int count) --> void print_str(char str[][MAX_STR_LEN],int count)
  • 如果您使用的任何教程或书籍中都没有记录,请查找其他内容。参数应为char str[][MAX_STR_LEN]。作为参数必须声明的数组数组中除了最主要的维度之外的所有维度。这个问题可能有数百个以一种或另一种形式重复,但通常标题如此多样化,很难找到它们。 closethis question,尤其是second 答案。
  • @Naveen Kumar 我想知道你使用的是什么编译器——因为我知道的大多数人甚至不会编译这段代码。

标签: c arrays string


【解决方案1】:

在传递二维数组作为参数时,我们需要指定 size 强制。 p>

所以,你应该像这样声明你的函数:

void print_str(char str[][MAX_STR_LEN],int count);

【讨论】:

    【解决方案2】:

    使用

    void print_str(char str[][MAX_STR_LEN], int count);
    

    【讨论】:

      【解决方案3】:

      始终在 C 中的二维数组中提供第二维长度。如果要声明二维数组,则第一维长度是可选的。

      【讨论】:

        猜你喜欢
        • 2016-12-08
        • 2017-04-05
        • 2015-09-09
        • 2016-10-25
        • 2019-03-18
        • 2017-06-03
        • 1970-01-01
        相关资源
        最近更新 更多