请教: C 高手/C 编译高手

老兵新手

新手上路
注册
2003-10-24
消息
198
荣誉分数
0
声望点数
0
想把一个 double 类型的变量的值转换成字符串输出? 也就是想把 double 变量的地址赋给字符串指针,由字符串指针读出 double 的十进制值 (可进行适当的转换). 但不知道 double 变量在内存中的存储规则(格式). 要求在 Windows 和 Unix 都能用.

或者: 在 Windows 上有 _fcvt(), _ecvt() 等, 是否在 Unix 上有类似的函数?

先谢了.
 
试试用ASCII转换一下,应该不用很复杂。ASCII无论在Windows还是Unix上都是一样。
 
用sprintf()
char buffer[200];
double d=12345,555;
sprintf(buffer,"%d\n",d);
 
谢谢 terrence,
也谢谢 stitch, 但不知道怎么用 ASCII 转?
另外,terrence, 一个 double 类型的数转换成十进制串的最大长度应该是多少?包括指数类型和小数部分。
 
sprintf()是标准C涵数,在任何OS都可以用.

想看内存里的格式,可以用printf()中的"%X", 把内容打印出来,
 
最初由 胡说之 发布
sprintf()是标准C涵数,在任何OS都可以用.

想看内存里的格式,可以用printf()中的"%X", 把内容打印出来,

在 debug 状态就能看到 double 变量在内存中的 8 Bytes(64-bit)的值。但这个值跟 display 和 print 出来的值并不直接对应。如果想用 char pointer 打出,必须先经过计算转换的。可不知道整数位,小数位,符号怎么确定的。

sprintf 编译后代码很长,不利于优化。如果能有 _fcvt() 一类的简单函数最好。现在先用 sprintf 代替了。

谢谢各位。
 
Check the source code of Linux, see how those gurus implement sprintf(), cut the part you want.
 
后退
顶部