字符串转int数组遇警告:makes pointer from integer without a cast 求助
解决数字字符串解析为int数组的问题
看起来你已经做好了前期准备——结构体定义、内存分配都搞定了,就差循环里的核心转换逻辑啦。其实这个问题的关键是利用ASCII码的特性:字符'0'到'9'的ASCII值是连续递增的,所以只要把每个字符减去'0'的ASCII值,就能得到对应的整数数字。
给你补全循环里的代码:
for (i = 0; i < 4; i++) { // 把字符转成对应的int数字 newIntArray->numbers[i] = numString[i] - '0'; }
简单解释一下:
numString[i]取到的是字符串里的单个字符,比如第一次循环是'8',它的ASCII值是56'0'的ASCII值是48,56-48=8,正好是我们要的整数- 依次循环,就能把"8162"转换成
[8, 1, 6, 2]的int数组啦
如果之后你想让代码更通用(比如处理任意长度的数字字符串),可以用strlen(numString)来代替硬编码的4,这样不管字符串多长都能适配,不过当前你的场景用4是完全没问题的。
内容的提问来源于stack exchange,提问作者Eliott Brown
相关产品推荐
相关产品推荐

