作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试迭代单个 const unsigned char
数组并使用类型转换将每个元素分配/转换为新的 char
数组,我读过的每个线程都建议使用类型转换但它对我不起作用,这是我的尝试:
#include <stdio.h>
#include <stdlib.h>
char *create_phone_number(const unsigned char nums[10]) {
char *new = malloc(11);
int i = 0;
for (; i<10; i++)
new[i] = (char)nums[i];
new[i] = '\0';
return new;
}
int main(void) {
char *num = create_phone_number((const unsigned char[]){ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 });
printf("%s\n", num);
free(num);
return 0;
}
以上代码的标准输出:
预期的标准输出:
1111111111
如何将 nums
中的元素转换为类型 char
并将转换后的值分配/存储在 new
数组中(高效)?
最佳答案
转换为 char
并不意味着将整数值转换为相应的 ASCII 字符;数值 1 是 ASCII 代码 SOH(标题开始),它没有可打印的表示形式,因此您的输出为空。如果您知道所有值都在 0 到 9 范围内,您可以将它们添加到 ASCII '0'
以获取生成关联 ASCII 数字的 char
值:
char *create_phone_number(const unsigned char nums[10]) {
char *new = malloc(11);
for (int i=0; i<10; i++)
new[i] = '0' + nums[i];
new[i] = '\0';
return new;
}
你实际上根本不需要施放它; +
的结果将是 int
并且它将存储回一个可以毫无问题地适合它的 char
(所以只要确保它们'实际上所有的都是 0
-9
值,否则你会得到奇怪的结果)。
关于arrays - 如何将 const unsigned char 数组中的元素转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235292/
我是一名优秀的程序员,十分优秀!