繁体   English   中英

C-将int转换为char

[英]C - Convert int to char

我正在寻找解决问题的方法(此处是新手)。

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

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

我已经尝试过itoa ,cast( char ), +'0'snprintf ...没有任何作用。

每当我问有关堆栈溢出的问题时,我都肯定解决方案会很明显。 在此先感谢您的帮助。

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

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

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

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

我尝试了无数其他组合,我什至不记得了...

可以将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;
};

arrayNum 不是 “字符串数组”。

以这种方式考虑可能对您很有用,但了解它的真正意义也很重要。 它是一个指针数组,其中每个指针都是指向char的指针。

有时,指向char的指针是“字符串”,有时是指向字符串中间的指针,有时仅是指向某个字符的指针。 这完全取决于您的使用方式。

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

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

语言不在乎。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM