double string

浮点型转化为字符串类型函数:char *_gcvt(double value,int digits,char *buffer)

code in my example:

double PI = 3.1415926;
char *strTemp = new char;
_gcvt(PI,10,strTemp);
m_SerialPort.WriteToPort((LPCTSTR)strTemp);

 

发现的问题:该函数会将遇到的第一个零(即0x00,也就是C中的NULL)作为字符串结束符'/0',比如,在将浮点数7.000转化为字符串时,转化后的字符串会变成[55'7'  46'.'  0' '  48'0'  48'0'],字符串长度为2,而不是预想的5 。当将此转化回浮点数时,结束符'/0'后面的字符被忽略。

    方法二:使用字符串格式化输出函数sprintf() ,函数调用方式如下。

    int sprintf(char *string,char *format,arg_list);

    在头文件中 #include<stdio.h>

  返回值:字符串长度(strlen)

  sprintf格式的规格如下所示。[]中的部分是可选的。

  %[指定参数$][标识符][宽度][.精度]指示符

  若想输出`%'本身时, 请这样`%%'处理。

  1. 处理字符方向。负号时表示从后向前处理。

  2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。

  3. 字符总宽度。为最小宽度。

  4. 精确度。指在小数点后的浮点数位数。

 

  %% 印出百分比符号,不转换。

  %c 整数转成对应的 ASCII 字元。

  %d 整数转成十进位。

  %f 倍精确度数字转成浮点数。

  %o 整数转成八进位。

  %s 整数转成字串。

  %x 整数转成小写十六进位。

  %X 整数转成大写十六进位。

    函数sprintf()的用法和printf()函数一样,只是sprintf()函数给出第一个参数string(一般为字符数组),然后再调用outtextxy()函数将串里的字符显示在屏幕上。arg_list为参数表,可有不定个数。通常在绘图方式下输出数字时可调用sprintf()函数将所要输出的格式送到第一个参数,然后显示输出。sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现     "该程序产生非法操作,即将被关闭...."的提示。
   因为C语言在进行字符串操作时不检查字符串的空间是否够大,所以可能会出现数组越界而导致程序崩溃的问题。即使碰巧,程序没有出错,也不要这么用,因为早晚会出错。所以一定要在调用sprintf之前分配足够大的空间给buf。

 

 

 

字符串型转化为浮点型函数:double strtod(const char *nptr, char **endptr);

code in my example:

char *string,*strstop;
string="3.1415926";
double PI;
PI = strtod(string,&strstop);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值