c - 如何将未知大小的字符串数组传递给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,以便它可以运行所有长度。
这与直接询问数组的长度不同,因为它涉及将数组传递给函数。
解决方案
您可以为此使用 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);
}
推荐阅读
- python - 使用 smtplib 发送内存中的 csv 附件
- c - 创建一个包含给定空格数的字符串
- php - MySql datetime:在 DateTime::DATE_ATOM 中抛出日期错误
- jsf - 如何制作primefaces的响应对话框
- excel - VBA-一次复制多个图表
- javascript - 从 ui 选择选项中删除对象
- angular - 以角度上传文件时出现错误“不支持的内容类型:应用程序/vnd.ms-excel”
- c# - 将不同的项目添加到 DataGridView 中每一行的 DataGridViewComboBoxColumn
- android - Android DiffUtil.ItemCallback areContentsTheSame 不同的ID
- reactjs - React keydown 事件捕获和冒泡