首页 > 解决方案 > 如何将未知大小的字符串数组传递给C中的函数

问题描述

我一直在寻找如何找到一种将字符串传递给 C 中的函数的方法,但它们似乎都需要数组的长度或非常具体的信息。我正在尝试创建一个函数来列出给定的字符串数组,以便在任一维度上的长度都可以变化。

目前我有:

void printStrings(char *arr[])
{
    for (int i = 0; i < 2; i++)
    { //print all list items
        printf("   %s\n", arr[i]);
    }
}

int main(int argc, char *argv[])
{
    char *list[2] = {"Hello", "Goodbye"};
    printStrings(list);
    return 0;
}

我希望能够读取 printStrings 中数组的长度,以消除 for 循环中的硬编码 2,以便它可以运行所有长度。

这与直接询问数组的长度不同,因为它涉及将数组传递给函数。

标签: carraysstring

解决方案


您可以为此使用 struct 。

struct string_list{
   char **list;
   size_t len;
};

void printStrings(struct string_list s_list)
{
    for (int i = 0; i < s_list.len; i++)
    { //print all list items
        printf("   %s\n", s_list.list[i]);
    }
}

int main(int argc, char *argv[])
{
    struct string_list s_list;
    char *list[2] = {"Hello", "Goodbye"};
    s_list.list = list;
    s_list.len = sizeof(list) / sizeof(list[0]);
    printStrings(s_list);

}

推荐阅读