C编程中的问题
我有以下列表:
int a[] = {0,0,1,0,0,1,0,2}
如何将以下列表项转换为char变量 b ?
像这样:
printf(%c, b)
OUTPUT: 00100102
我需要这个来打印嵌入式系统液晶屏幕中列表的值,而普通打印选项不可用。无法从www.stackoverflow.com找到类似的例子。反之亦然,有很多解决方案可以将字符串转换为列表。
答案 0 :(得分:2)
int a = [0,0,1,0,0,1,0,2]
这不是有效的C.也许你的意思是:
const int a[] = { 0, 0, 1, 0, 0, 1, 0, 2 };
将十进制数字转换为C中的可打印字符非常简单,只需添加'0'
:
printf("%c", '0' + a[0]);
将打印0
。
答案 1 :(得分:2)
#include <stdio.h>
#include <stdlib.h>
int main(){
int a[] = {0,0,1,0,0,1,0,2};
const char *table = "0123456789";
size_t size = sizeof(a)/sizeof(*a);
char *b = malloc(size+1);
int i;
for(i=0;i<size;++i)
b[i]=table[a[i]];
b[i]='\0';
printf("%s\n", b);
free(b);
return 0;
}
答案 2 :(得分:0)
您可以遍历数组的元素,并printf()
每个元素,将其视为'0'
的偏移量:
/*
'0' + 0 = '0'
'0' + 1 = '1'
'0' + 2 = '2'
*/
const int a[] = {0,0,1,0,0,1,0,2};
const int count = sizeof(a) / sizeof(a[0]);
int i;
for (i = 0; i < count; i++) {
printf("%c", '0' + a[i]);
}
printf("\n");
答案 3 :(得分:-1)
当您将int
数组中的每个值转换为char
数组中的相应值时,您只需要一个char
数组。将空终止符\0
(或0)附加到char
数组时,它将变为C字符串。
int a[] = {0,0,1,0,0,1,0,2}; //use curly braces to assign values to new array.
char b[sizeof(a)/sizeof(a[0])+1];//Accomodates any size of a. note extra space for terminating \0
int i;
//EDIT 5 following lines
b[0]=0; //ensure string is null terminated
for(i=0;i<sizeof(a)/sizeof(a[0]);i++)
{
sprintf(b, "%s%d", b, a[i]);//copy one char per loop to concatenate string with all elements of `a`
}
现在你有一个字符串,根据a
中的数组元素的数量来确定大小如下:
“00100102”
在内存中 ,您会看到 | 48 | 48 | 49 | 48 | 48 | 49 | 48 | 50 | 0 |
(整数0,1和2的每个字符表示的整数值,在最后一个位置用空字符0标记字符串的结尾。)
还注意 ,短语sizeof(array)/sizeof(array[0])
用于获取数组中元素的数量。