[英]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.