gpt4 book ai didi

Char ** 使用和打印

转载 作者:行者123 更新时间:2023-12-04 00:45:28 25 4
gpt4 key购买 nike

在 C 中,我使用 char ** 来保存一系列字符串。

这是我的代码:

char ** c;
//now to fill c with data ????

//cannot change:
printf ("%*s%s", 0, "", *c);
while (*++w)
printf (" %s", *c);

我不知道如何用数据填充 c。什么是正确的方法?我无法更改 3 条打印线,因为它们在外部函数中。

最佳答案

我认为术语在这里很重要。 char ** 根本不“保存”一系列字符串(与 C 之外的高级语言中的容器对象不同)。变量 c 只是一个指向字符指针的指针,该字符将成为以空字符结尾的字符串中的第一个字符。

这种思路直接引出了解决方案:如果 c 是一个指向字符指针的指针,那意味着我们必须分配一些内存来实际保存字符串数组。

作为评论发布的@DB_Monkey 的解决方案试图做到这一点,但并不完全正确,因为它意味着 c[0] = "cat" 之类的代码将“cat”复制到 c[0] 中,事实并非如此——赋值适用于指针,而不是字符串。更好的方法是:

int rows = 3;
char **c = calloc (rows,sizeof(char*));
c[0] = "cat";
c[1] = "dog";
c[2] = "mouse";

这也表明没有必要显示每个字符串的显式空终止。

关于Char ** 使用和打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14554811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com