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

 我来答
匿名用户
2013-08-29
展开全部
#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;
}
mingwei8258
2013-08-29 · 超过27用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:62.8万
展开全部
#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);//别忘了 动态申请的要自己释放 养成好习惯
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuantailing
2013-08-28 · TA获得超过2545个赞
知道小有建树答主
回答量:1167
采纳率:92%
帮助的人:652万
展开全部

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

#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'就不叫字符串了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式