您的位置:首页 > 编程语言 > C语言/C++

C语言strtod()函数:将字符串转换为double

2018-04-11 10:09 302 查看
//函数是看的别人的文章    发表本文的目的只是做个笔记而已。

函数 strtod() 用来将字符串转换成双精度浮点数(double),其原型为:

double strtod (const char* str, char** endstr);

【参数说明】str 为要转换的字符串,endstr 为第一个不能转换的字符的指针。

【函数说明】strtod() 函数会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过
isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时('\0')才结束转换,并将结果返回。参数 str 字符串可包含正负号、小数点或E(e)来表示指数部分。如123. 456 或123e-2。

若endptr 不为NULL,则会将遇到的不符合条件而终止的字符指针由 endptr 传回;若 endptr 为 NULL,则表示该参数无效,或不使用该参数。

其中if(!NULL)  ;   会执行   。   NULL(空)为假;

【返回值】返回转换后的浮点型数;若不能转换或字符串为空,则返回 0.0。

天梯题目:1505 神秘的杂文     链接:http://codevs.cn/problem/1505/      

题目描述 Description

有一篇“杂文”,由一些整数、带小数点的实数和乱七八糟的单词(字符串)组成。整数的范围必须在-70000到70000之间;实数用一般形式表示,而不用科学计数法,大小也在-70000到70000之间,(输入文件中保证)有效数字不超过10位;凡不符合以上格式和范围的都是单词,一个单词内部不含空格。

这些内容由空格或者回车分割,连续的空格可能不只一个,也可能有空行。

求除了单词以外的整数和实数的算术平均值。

输入描述 Input Description
            

 由整数、实数和单词间隔形成的文章。每行至多255个字符。文章大小至多100KB。

输出描述 Output Description

文中符合要求的整数和实数的平均值,四舍五入保留小数点后2位。

样例输入 Sample Input

3 3.14 aaa  5a

A5 -3

 

-3.14  5

样例输出 Sample Output

1.00

#include <iostream>
#include <cstdio>
#include <cstdlib>

using namespace std;

int main()
{
char *p, A[100];
int n=0;
double sum=0,a;
while(scanf("%s", A)!=EOF)
{
a = strtod(A, &p);
if(!*p&&a>-70000&&a<70000)
{
//            printf("%.2f\n",a);
sum += a;
n++;
}
}
if(n==0) printf("0.00");
else printf("%.2f", sum/n);

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  函数 c语言
相关文章推荐