怎么把一个int数组转化为char型数组??

main()
{
int a[10];
int i;
char *p;

for (i = 0; i < 9; i ++)
{
a[i] = i;
}
a[i] = '\0';
p=(char *)a;
puts(p);

return 0;
}

假定int和char数组如下:
int I[2]={1,2}
char c[2]={1,2}
两者转换代码:
int a[2] = {1, 2};
char c[2];
for( int i = 0; i < 2; i++ ) c[i] = a[i];

Int是将一个数值向下取整为最接近的整数的函数,为取整函数
char是C/C++整型数据中比较古怪的一个,其它的如int/long/short等不指定signed/unsigned时都默认是signed,但char在标准中是unsigned,编译器可以实现为带符号的,也可以实现为不带符号的,有些编译器如pSOS的编译器,还可以通过编译开关来指定它是有符号数还是无符号数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-10
如:
#include "stdio.h"
int main()
{
int a[10]={79,76,73,72,75,78,77,74,71,70},i;
char b[10];
for(i=0;i<10;i++)
{
b[i]=a[i];
printf("%c\n",b[i]);
}
return 0;
}追问

用强制转换行不 不要直接逐个赋值

追答

输出时可以强制转换

第2个回答  2012-04-10
强制类型转换(char)追问

怎么强制...

第3个回答  2012-04-10
强制转换(要转换的类型)
第4个回答  2012-04-10
/*
234
Press any key to continue
*/
#include <stdio.h>

int main() {
int i,num = 234,n;
char ch,s[10];
for(n = 0; num; ++n) {
s[n] = num % 10 + '0';
num /= 10;
}
s[n] = '\0';
for(i = 0; i < n / 2; ++i) {
ch = s[i];
s[i] = s[n - 1 - i];
s[n - 1 - i] = ch;
}
puts(s);
return 0;
}追问

.......你搞错了吧

追答

原来是整数234,输出的是字符串234(puts(s);),错在何处?

追问

我想问的是怎么用强制转化把一个int数组给变成一个char型数组.
而且把一个整数放到数组里可以用 sprintf 或者非标准的 atoi 函数
所以你能否用强制转化把一个int数组给变成一个char型数组.

追答

/*
不能强制转换,整数2和字符'2'的值是不同的。
下面通过函数调用的方法转换整形数组到字符数组。
234 "234"
12 "12"
456 "456"
900 "900"
657 "657"
Press any key to continue
*/
#include

int main() {
int i,j,n,num[] = {234,12,456,900,657};
char ch,s[10];
for(j = 0; j ",num[j]);
for(n = 0; num[j]; ++n) {
s[n] = num[j] % 10 + '0';
num[j] /= 10;
}
s[n] = '\0';
for(i = 0; i < n / 2; ++i) {
ch = s[i];
s[i] = s[n - 1 - i];
s[n - 1 - i] = ch;
}
printf("\"%s\"\n",s);
}
return 0;
}

追问

哦哦 原来问题出现在这整数2和字符'2'的值是不同的。 谢谢大神

本回答被提问者采纳
相似回答