本文主要介绍C语言strtod()函数案例的详细说明。本文通过一个简单的案例来说明对这项技术的理解和使用。以下是详细内容,有需要的朋友可以参考一下。
前言
网上有很多关于strtod()函数的文章,但是大部分都是用strtod()函数来转换一个字符。
char * str=' 111.11
char * target
双ret
ret=strtod(str,target);
转换字符串的这种用法很少。
char *p='111.11 -2.22楠楠(2) inF 0X1。BC 70 a 3d 70 a 3d 7 p 6 1.18973 e 4932 zzz ';
本文主要参考strtod()函数,只讲解代码示例。当然,我在理解示例代码时遇到了一些问题,在StackOverflow中提出了以下问题。结果巴玛神直接解释了代码,我很佩服这个神。StackOverflow版本链接
代码分析
#包含stdio.h
#包含错误号h
#包含stdlib.h
int main(void)
{
//带错误处理的解析
const char * p=' 111.11-2.22 nannan(2)inF0x 1。BC 70 a 3d 70 a 3d 7 p 6 1.18973 e 4932 zzz ';
printf('正在分析' %s':\n ',p);
char * end
for (double f=strtod(p,end);p!=结束;f=strtod(p,end))
{
printf(''%)。*s' -',(int)(end-p),p);
p=结束;
if (errno==ERANGE){
printf('范围错误,得到');
errno=0;
}
printf('%f\n ',f);
}
//不进行错误处理的解析
printf('-0.0000000123 junk '-% g \ n ',strtod('-0.000000123 junk ',NULL));
printf('垃圾'- %g\n ',strtod('垃圾',NULL));
}
问题1:
P=end //这个语句是为了什么?
std()函数的参数:
double strtod( const char *str,char * * str _ end);
字符串指针
指针对指针
在调用strtod()函数之前,打印字符串指针p和end的地址。
printf('%p\n ',p);
printf('%p\n ',end);
运行结果
0000000000408000 0000000000000002d
接下来,当执行循环时,打印P和end的地址。
for (f=strtod(p,end);p!=结束;f=strtod(p,end))
{
printf('p addr=%p\n ',p);
printf('end addr=%p\n ',end);
printf(''%)。*s' -',(int)(end-p),p);
p=结束;
if (errno==ERANGE){
printf('范围错误,得到');
errno=0;
}
//printf('%f\n ',f);
}
输出
p addr=0000000000408000
end addr=0000000000408006
'111.11' - 111.110000
p addr=0000000000408006
end addr=000000000040800C
' -2.22' - -2.220000
p addr=000000000040800C
end addr=0000000000408010
Nan' - 1。#QNAN0
p addr=0000000000408010
end addr=0000000000408017
南’——1。#SNAN0
p addr=0000000000408017
end addr=000000000040801B
inF' - 1。#INF00
p addr=000000000040801B
end addr=0000000000408030
0X1。BC70A3D70A3D7P 6' - 111.110000
p addr=0000000000408030
可以发现,end指针始终指向当前字符串中的下一个字符,p指针指向当前字符串中的一个字符。
因此,语句p=end实现了对字符串中所有字符的strtod()操作,当for (f=strtod(p,end);p!=结束;F=strtod(p,end)),即没有字符执行strtod()操作,可以退出循环。
问题2:
printf(''%)。*s' -',(int)(end-p),p);
为什么会打印出一系列字符,例如:
111.11 ' '-2.22 ' ' Nan ' ' Nan(2)" inF ' '0x 1。' BC70A3D70A3D7P 6' ' 1.18973e 4932 '
(int)(end-p)计算长度。*单位为%。*s代表长度,即从当前字符串中选择多少个字符进行打印。
示例代码:
# includestdio.h
int main()
{
char *p='Hello World!';
printf('length=2 str=%.2s\n ',p);
printf('length=3 str=%.3s\n ',p);
}
输出
长度=2 str=He
长度=3 str=Hel
本文关于C语言strtod()函数案例的详细讲解到此为止。关于C语言strtod()函数的更多信息,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。