C语言:将一个整型数组转换为字符串输出。如 int[]={10,11,12},输出char *s = "101112"

如题所述

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void IntToStr(int *i, char *c, int len)
{//i为整形数组,c为要存放字符串的数组,len为整形数组元素个数
    int k;
    char tmp[10];
    for(k=0;k<len;k++)
    {
        itoa(i[k],tmp,10);
        strcat(c,tmp);
    }
}
int main()
{
    int i[]={10,11,12};
    char c[100]="";
    IntToStr(i,c,sizeof(i)/sizeof(i[0]));
    printf("%s\n",c);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-29
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
int a[] = {11,12,13};
int i;
char * s = (char *)malloc(32);
char * str = (char *)malloc(128);
str[0] = 0; //你是动态申请的空间,c语言不会初始化内容的,将第1个字符标记为结束符
for(i=0;i<sizeof(a)/sizeof(int);i++)
{
itoa(a[i],s,10);
printf("%s\n",s);
strcat(str,s);//原先没初始化的话 可能128空间内计算机都以为有内容的 所以一直会向后找,直到找到0再拼接
}

printf("%s\n",str);

free(s);//别忘了 动态申请的要自己释放 养成好习惯
free(str);//别忘了 动态申请的要自己释放 养成好习惯
}
第2个回答  2013-08-28

如下程序,有不明白的地方继续追问:

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

int main()
{
    int a[] = {10,11,12};
    int i;
    char s[100] = "";
    char buf[100];
    for (i = 0; i < sizeof(a)/sizeof(int); i++){
        sprintf(buf, "%d", a[i]);//把a[i]转成字符串,存在buf里。
        strcat(s, buf);//将buf拼接到s尾部。
    }
    puts(s);
    system("pause");
    return 0;
}

追问

为什么不需要再循环后面给字符串s加上结束符‘/0’;    另外,请大神分析一下:


内存错误???

追答

因为strcat进行字符串拼接的时候自动补充了'/0'。补充地,字符串复制函数strcpy也是一样。str开头的字符串处理函数一般都会自动补'\0'的,它们毕竟都叫“字符串”处理函数嘛,没有'\0'就不叫字符串了。

相似回答