C语言中如何把int型数组转化为字符串?

如何把int型数组转化为字符串?请给出一个函数方法

方法1:

int a[10]={1,2,3,4,5,6,7,8,9,0};
 char buf[10];
 string s;
 for(int i=0;i<10;i++)
 {
  itoa(a[i],buf,10);
  s+=buf;
 }

方法2:

int a[10]={65,66,67,68,69,70,71,72,73,74};
 char buf;
 string s;
 for(int i=0;i<10;i++)
 {
  buf=a[i];
  s+=buf;
 }

方法3:

int a[10]={0,1,2,3,4,5,6,7,8,9};
 char buf;
 string s;
 for(int i=0;i<10;i++)
 {
  buf=(char)a[i]+48;
  s+=buf;
 }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-15
不准用sprintf 之类函数,要自己写,那么 这样自己写i2s如下:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void i2s(int x, char *s){
int v,xx,i,j,n=0;
char c;
xx = abs(x);
while(1){
v=xx%10;
s[n]=v+'0'; n++;
xx=(xx-v)/10;
if (xx==0) break;
}
if (x<0) {s[n]='-'; n++;}
for (i=0;i<n/2;i++){
c=s[i]; s[i]=s[n-i-1];s[n-i-1]=c;
}
s[n]='\0';
}

main()
{
int a[4]={12,34,-56,789};
char s[4][15];
int i;
for (i=0;i<4;i++){
i2s(a[i],s[i]);
printf("%s ",s[i]);
}
return 0;
}

输出:12 34 -56 789
如用
int i2s(int x, char *s){
//全部照旧
return n;
}
可以返回字符串长度。
你若想把所有输出放入一个长长的char 数组,有了每个字符串长度,应当很容易自己做了--即使不用strcat()。
第2个回答  推荐于2017-12-16
是以整型的位数为限的,输入位数太长了不行。
//#include "stdafx.h"//vc++6.0加上这一行.
#include "stdio.h"//
void main(void){
double rn=9876.5678;
int i=1000000000,k,pt=1,n;
char a[12]="";
printf("Enter a floating point number...\nrn=");
//scanf("%lf",&rn); //手工输入时把这一行开放.
while((rn/=10)>1.0) pt++;
n=(int)(rn*i);
while(!(n%10)){
n/=10;
i/=10;
}
for(k=0,i/=10;i>=1;i/=10){
a[k++]=n/i+'0';
n%=i;
if(k==pt) a[k++]='.';
}
printf("%s\n",a);
}本回答被网友采纳
第3个回答  2013-11-15
int b=13444;
sprintf(a,"%d" ,b)将b的值转换为“13444”字符串付给a。追问

不用 sprintf itoa

第4个回答  2013-11-15
char s[10];
sprintf(s,"%d",10);
----------------------------------or--------------------------
#include <stdlib.h>
#include <stdio.h>
int main()
{
int number = 123456;
char string[25];
itoa(number, string, 10);
printf("integer = %d string = %s\n", number, string);
return 0;
}追问

不用 sprintf itoa

追答

那就考虑内存里面直接操作ASCII码,每位直接读了加0x30

追问

就是这样,可以写成可以调用的函数形式吗,int中包括符号的

相似回答