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

本文介绍了C语言中的strtod()函数,用于将字符串转换为double类型。函数跳过前导空白字符,处理正负号、小数点和指数部分。返回转换后的浮点数或0.0,如果遇到非数字字符则结束转换。同时,文章提供了一个天梯题目,要求从含有整数、实数和单词的文本中计算符合格式的数值的平均值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值