怎么能把一个数组用字符串表示出来 并一次显示出来

jiaojiaobao 2011-02-25 09:49:20
例如:int a[10]
a[0] = 1 a[1] = 2 a[2] = 5 a[4] = 10

char *str;
怎么能让str输出1 2 5 10

谢谢啊

...全文
335 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xwfde 2011-02-25
  • 打赏
  • 举报
回复
str =new char[sizeof(a)*4 1];
memcpy(str,a,sizeof(a)*4 1 );
str[sizeof(a)*4 ]=0
赵4老师 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 c271579305 的回复:]
C/C++ code

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

int main( void )
{
int a[10];
int i;
int j;
char buf2[256] = "";
char* str = buf1;
for……
[/Quote]
#include <stdio.h>
#include <string.h>

int main( void )
{
int a[10];
int i;
int j;
char buf2[256];//此处略改

for( i=0; i<10; i++ )
{
a[i] = 0x7FFFFFFF;
}
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
buf2[0]=0;//加了这句
for( j=0; j<10; ++j )
{
if( 0x7FFFFFFF != a[j] )
{
sprintf( buf2,"%s%d ",buf2,a[j] );//略改了这句
}
}
puts( buf2 );//此处略改
return 0;
}

C271579305 2011-02-25
  • 打赏
  • 举报
回复
啊, 我是复制楼上的一部分, 注释忘了去掉! 不好意思
C271579305 2011-02-25
  • 打赏
  • 举报
回复

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

int main( void )
{
int a[10];
int i;
int j;
char buf1[256] = "";
char buf2[256] = "";
char* str = buf1;
for( i=0; i<10; i++ )
{
a[i] = 0x7FFFFFFF;
}
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
for( j=0; j<10; ++j )
{
if( 0x7FFFFFFF != a[j] )/*什么叫有值,楼主自己判断吧*/
{
sprintf( buf2,"%d ",a[j] );
strcat( str, buf2 );
}
}
puts( str );
return 0;
}
mstlq 2011-02-25
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
int a[10];
int i;
char buf1[256]="";
char buf2[256]="";
char* str = buf1;
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
for(i=0;i<10;++i)
{
if(a[i]有值)/*什么叫有值,楼主自己判断吧*/
{
sprintf(buf2,"%d ",a[i]);
strcat(str,buf2);
}
}
puts(str);
return 0;
}
proghua 2011-02-25
  • 打赏
  • 举报
回复
12楼的有道理,可以用strcat或strncat进行字符串拼接
sxqinge 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 sxqinge 的回复:]
C/C++ code

int array_Len = sizeof(a)/sizeof(a[0]);
char *str = new char(1024);
for(int i=0; i<array_Len; i++)
{
char temp[30];
sprintf(temp,"%d", a[i]);
str += temp;//没注意哦,这句错了,呵呵修改下:
strcat(str, temp);
}
[/Quote]
我在地球 2011-02-25
  • 打赏
  • 举报
回复
我觉得吧,用 for 循环来拼接就好了
sxqinge 2011-02-25
  • 打赏
  • 举报
回复

int array_Len = sizeof(a)/sizeof(a[0]);
char *str = new char(1024);
for(int i=0; i<array_Len; i++)
{
char temp[30];
sprintf(temp,"%d", a[i]);
str += temp;
}
arong1234 2011-02-25
  • 打赏
  • 举报
回复
数组不存在有的有值,有的没值得情况。只要是数组,它的每个元素永远是有值得。你如果需要标记某些元素不是合法值,你必须额外创建一个数组来记录这种信息[Quote=引用 5 楼 jiaojiaobao 的回复:]
引用 1 楼 mstlq 的回复:

C/C++ code

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


int main()
{
int a[10];
char buf[256];
char* str = buf;
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
sprintf(str, "……
[/Quote]
C271579305 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 proghua 的回复:]

还不如直接用for循环输出呢
[/Quote]

题目要求输出的数组时跳跃的, 用循环不好吧!
jiaojiaobao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 proghua 的回复:]

能用c++的string就好了
[/Quote]

不行啊,就只能用c语言
proghua 2011-02-25
  • 打赏
  • 举报
回复
能用c++的string就好了
jiaojiaobao 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mstlq 的回复:]

C/C++ code

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


int main()
{
int a[10];
char buf[256];
char* str = buf;
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
sprintf(str, "%d……
[/Quote]

不是这个意思,我并不知道数组里有几个有值的,所以不能用sprintf(str, "%d %d %d %d", a[0], a[1], a[2], a[4]);
如果用for循环,下次的值就会把上次的覆盖,我是想一次生成 一个str,拿到其它地方用
proghua 2011-02-25
  • 打赏
  • 举报
回复
还不如直接用for循环输出呢
mtj520 2011-02-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 bdmh 的回复:]
你用char数组多好,直接 printf("%s",数组)
[/Quote]
+1
bdmh 2011-02-25
  • 打赏
  • 举报
回复
你用char数组多好,直接 printf("%s",数组)
mstlq 2011-02-25
  • 打赏
  • 举报
回复

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


int main()
{
int a[10];
char buf[256];
char* str = buf;
a[0] = 1;
a[1] = 2;
a[2] = 5;
a[4] = 10;
sprintf(str, "%d %d %d %d", a[0], a[1], a[2], a[4]);
puts(str);
return 0;
}

jiaojiaobao 2011-02-25
  • 打赏
  • 举报
回复
ok 非常感谢大家,问题已经解决

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧