如何用C语言将unsigned long 的数组分成点分十进制字符串???拜求答案.谢谢大侠们啊~~~

dqarc 2007-11-22 08:15:18
在内存中已经存在一个unsigned long a[128]的数组.

里面存着unsigned long 的数组.

如何将里面的数据转换成点分十进制的形式的字符串呢????
拜求答案.谢谢大侠们啊~~~


例如:
已有数组unsigned long a[128];

a[0]=1
a[1]=3
a[2]=6
a[3]=2311
a[4]=435
a[5]=234

注意:128个数组不一定都用满.可能只用其中的一部分.
就上上面,仅仅用到6个数组元素,其他的122个都没有使用.不知道剩下的122个数组元素应该如何处理????是初始化为0吗???谢谢~~
但是,我们仅仅用到存入unsigned long型的数据的元素

结果输出的形式为:

unsigned char b[]="1.3.6.2311.435.234"

.号不能在字符串的最前面和最后面出现

请大侠用C语言编写一下.谢谢啊~~ 做一个通用的处理.上面仅仅是举一个例子的.谢谢
...全文
181 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Treazy 2007-11-26
  • 打赏
  • 举报
回复

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

void Fun(char *dst, long *src, int len)
{
while(len--)
{
ltoa(*src, dst, 10);
dst += strlen(dst);
src++;
if(len != 0)
{
*dst++ = '.';
}
}

}

int main()
{
long a[128] = {1,2,3,4,5,6,7};
char *p = (char *)malloc(14);
Fun(p, a, 7);
printf("%s", p);
return 0;
}

jixingzhong 2007-11-26
  • 打赏
  • 举报
回复

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

#define BUFFERLEN 80 //字符串b的长度
int main()
{
unsigned long a[128]={1,3,6,2311,435,234}; //其他元素初始化为0,初始化是好习惯
char b[BUFFERLEN]=""; //初始化为空字符串
int i=1, len=6, index; //len 是a中的有效元素个数

index = sprintf(b, "%ul", a[0]);
while (i<len)
index += sprintf(b+index, ".%ul", a[i++]); //sprintf构造字符串,%ul对应unsigned long
puts(b); //OK
return 0;
}
jixingzhong 2007-11-26
  • 打赏
  • 举报
回复
sprintf
pptor 2007-11-23
  • 打赏
  • 举报
回复
定义一个长度 表示初始化了几个数组成员 不就好了
thecorr 2007-11-22
  • 打赏
  • 举报
回复
#include   <iostream> 

using namespace std;
#define LENGTH 128
int used_length = -1;

void name_variable(unsigned long int* a, size_t pos, unsigned long int to_be_named);
void print_datas(unsigned long int *a );
void main()
{
unsigned long int a[LENGTH];
for( int i=0;i<5;i++ )
{
name_variable(a,i,i);
}
print_datas(a);
}

void name_variable(unsigned long int* a, size_t pos, unsigned long int to_be_named)
{
if ( pos >= LENGTH )
return;
a[pos] = to_be_named;
if ( (long)pos > used_length )
{
used_length = pos;
}
}

void print_datas(unsigned long int *a )
{
char p[1000];
memset(p,0,1000);
for ( int i=0;i<=used_length;i++ )
{
char str[100];
ltoa(a[i],str,10);
if ( i!= used_length )
{
strcat(str,".");
}
strcat(p,str);
}
puts( p );
}
thecorr 2007-11-22
  • 打赏
  • 举报
回复
搞笑吧大哥`
c不会自动判定哪个是初始化了,哪个没有被初始化吧~~~
除非你定义一个长度变量监控

70,037

社区成员

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

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