,,C语言strtod()函数案例详解

,,C语言strtod()函数案例详解

本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • 详解c语言中的字符串数组是什么,详解c语言中的字符串数组结构,详解C语言中的字符串数组
  • 表达式求值c++实现,c语言实现表达式求值
  • 看懂c语言基本语法,C语言详解,C语言的基本语法详解
  • 用c语言实现快速排序算法,排序算法设计与实现快速排序C语言,C语言实现快速排序算法实例
  • 深入解析c语言中函数指针的定义与使用方法,深入解析c语言中函数指针的定义与使用情况,深入解析C语言中函数指针的定义与使用
  • 描述E-R图,E-R图举例,关于C语言中E-R图的详解
  • 折半查找法C语言,折半查找算法(算法设计题)
  • 折半查找法C语言,c语言折半法查找数据,C语言实现折半查找法(二分法)
  • 扫雷小游戏c++代码设计,c语言扫雷游戏源代码,C语言实现扫雷小游戏详细代码
  • 怎样统计程序代码行数,C语言统计行数,C#程序员统计自己的代码行数
  • 基于c语言的贪吃蛇游戏程序设计,用c语言编写贪吃蛇游戏程序,C语言实现简单的贪吃蛇游戏
  • 图的两种遍历算法,图的遍历算法代码c语言,Python算法之图的遍历
  • 留言与评论(共有 条评论)
       
    验证码: