谁能帮我运行一下以下代码,并把运行结果发给我下。
代码如下:
#include stdio.h
#include string.h
#include math.h
#include stdarg.h
char *to_string(int count,double first,...);
void integer_to_string(char integer_string[],size_t leng,int i);
void decimal_to_string(char decimal_string[],size_t leng,double n);
int main(void)
{
printf("%s",to_string(4,1.23,2.56,3.82,0.00));//测试函数功能
return 0;
}
/*把数字整数部分转换为字符串的函数*/
void integer_to_string(char integer_string[],size_t leng,int in)
{
int digit=0;//用来计数数字整数部分的位数
char num[]={'0','1','2','3','4','5','6','7','8','9'};//各个位数上的字符串
while(true)
{
if(!(in/(int)pow(10,digit)))
break;
else
digit++;
}//统计输入整数的位数
int a=digit;
if(in>=0)
{
for(int i=0;i<digit;++i)
{
integer_string[i]=num[in/(int)pow(10,--a)];
in=in-in/(int)pow(10,a)*(int)pow(10,a);
}
integer_string[digit+1]='\0';
}
else
{
integer_string[0]='-';
in=(-in);
for(int i=1;i<digit+1;++i)
{
integer_string[i]=num[in/(int)pow(10,--a)];
in=in-in/(int)pow(10,a)*(int)pow(10,a);
}
integer_string[digit+2]='\0';
}//把整数转化为字符串
}
/*把数字小数部分转化为字符串的函数*/
void decimal_to_string(char decimal_string[],size_t leng,double n)
{
int I=0;//中间变量
char num[]={'0','1','2','3','4','5','6','7','8','9'};//各个位数上的字符串
/*把数字小数部分转换为字符串*/
decimal_string[0]='.';
I=n*10;
decimal_string[1]=num[I];
n=n*10-I;
I=n*10;
decimal_string[2]=num[I];
decimal_string[3]='\0';
}
char* to_string(int count,double first,...)
{
va_list parg;//可变数量变元函数必须变量
char number_string[100]={0};//存储数字转化的字符串
char integer[20]={0};//储存数字整数部分转换字符串的中间数组
char decimal[4]={0};//储存数字小数部分转换字符串的中间数组
int integer_part=(int)first;//数字整数部分
double decimal_part=first-integer_part;//数字小数部分
const char comma[]={','};//逗号字符
double value=0.0;//中间变量
/*初始化字符串数组*/
integer_to_string(integer,20,integer_part);
decimal_to_string(decimal,4,decimal_part);
strcpy(number_string,integer);
strcat(number_string,decimal);
/*把数字转换为字符串*/
va_start(parg,first);
while((value=va_arg(parg,double))!=0.0)
{
integer_part=(int)value;
decimal_part=value-integer_part;
char integer[20]={0};
char decimal[4]={0};
strcat(number_string,comma);
integer_to_string(integer,20,integer_part);
decimal_to_string(decimal,4,decimal_part);
strcat(number_string,integer);
printf("%s\n",number_string);
strcat(number_string,decimal);
}
va_end(parg);
return number_string;//返回字符串
}