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

来源:互联网 发布:手机游戏变速软件 编辑:程序博客网 时间:2024/05/30 23:29


//函数是看的别人的文章    发表本文的目的只是做个笔记而已。


函数 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


有一篇“杂文”,由一些整数、带小数点的实数和乱七八糟的单词(字符串)组成。整数的范围必须在-7000070000之间;实数用一般形式表示,而不用科学计数法,大小也在-7000070000之间,(输入文件中保证)有效数字不超过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;}


0 0
原创粉丝点击