c语言strtod()函数的用法

size_tindex;doubleresult=0;charbuf[]="";fgets(buf,buf_len,stdin);char*endptr=NULL;那么r... size_t index ;
double result = 0;
char buf[] = "";
fgets(buf,buf_len,stdin);
char *endptr =NULL;
那么result = strtod(buf+index,&endptr);
index = endptr - buf;
index 对应第一个操作数的字符数,为什么,这两行代码怎么理解?
index = 0;
展开
 我来答
cdyzxy
2015-04-20 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3777万
展开全部
index对应第一个操作数的字符数,这个前提是操作数前面没有空格一类另strtod自动跳过的字符。
因为endptr是strtod转换字符串的结尾位置,比如buf中的字符串是1234abc,转换时将转换到1234为止,strtod发现字符a不属于合法数字内容,会在遇到a时结束转换,并另endptr指向a的这个位置。index=endptr-buf;会得到a字符前面有几个字符的计数。
千锋教育
2015-12-09 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
名称含义
strtod(将字符串转换成浮点数)
相关函数
atoi,atol,strtod,strtol,strtoul
函数说明编辑
strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。
范例编辑
#include<stdlib.h>
#include<stdio.h>
void main()
{
char *endptr;
char a[] = "12345.6789";
char b[] = "1234.567qwer";
char c[] = "-232.23e4";
printf( "a=%lf\n", strtod(a,NULL) );
printf( "b=%lf\n", strtod(b,&endptr) );
printf( "endptr=%s\n", endptr );
printf( "c=%lf\n", strtod(c,NULL) );
}
执行:
a=12345.678900
b=1234.567000
endptr=qwer
c=-2322300.000000
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式