C - 将int转换为char

时间:2016-11-20 23:23:52

标签: c

我正在为我的问题寻找解决方案(这里是新手)。

我有一个字符串数组(char** arrayNum),我想在第一个索引处存储该数组的元素数。

但我找不到将元素数量转换为字符串(或字符)的正确方法。

我已尝试itoa,施放(char),+'0'snprintf ......无效。

每次我在Stack Overflow上提问时,我都相信解决方案会很明显。在此先感谢您的帮助。

所以我填充了一个字符串数组char** arrayNum,将索引0留空。

当我尝试将字符串分配给arrayNum[0]时:

  • 这有效:arrayNum[0] = "blabla";

  • 这不起作用:arrayNum[0] = (char) ((arraySize - 1)+'0');

我尝试了无数其他组合,我甚至都记得......

2 个答案:

答案 0 :(得分:1)

arrayNum可以被认为是一个字符串数组(char *)。因此,您自然无法尝试将char(或者除了char *之外的任何类型)分配给此数组的元素。

我认为最好将数组的长度分别存储到数组中。例如,使用struct。否则会引起混淆。

如果你真的,真的想在第一个元素中存储长度,那么你可以做类似的事情:

arrayNum[0]    = malloc(sizeof(char));
arrayNum[0][0] = (char) ((arraySize - 1)+'0');

这利用了arrayNum严格地是指针数组的事实,并且每个指针都是指向char的指针。所以它可以指向一个字符或一个字符数组("字符串")。

将此与清晰度进行比较(比如说):

struct elements {
    int length;
    char **data;
};

答案 1 :(得分:1)

arrayNum 不是“字符串数组。”

以这种方式思考它可能是有用的,但重要的是要知道它到底是什么。它是一个指针数组,其中每个指针都是指向char的指针。

有时指向char的指针是“字符串”,有时它指向字符串的中间指针,有时它只是指向某处某个字符的指针。这一切都取决于你如何使用它。

C编程语言实际上没有字符串。它有字符串文字,但字符串文字只是一个const字符数组,恰好以\000结尾。您可以编写arrayNum[0] = "blabla";的原因是因为字符串文字"blabla"是指向“blabla”中第一个'b'的指针,以及arrayNum数组是指向字符的指针。

您有责任确定arrayNum[i]是否指向某个字符串的第一个字符,或者它是否恰好指向某个字符;并且你有责任决定并跟踪它是否指向需要freed()的东西,或者它是否指向只读内存,或它是否指向堆栈中的某些内容,或者它是否指向/进入一些静态分配的数据结构。

语言不关心。