当前位置:主页 > c/c++教程 > C语言 字符串转浮点函数

C语言实现字符串转浮点函数的示例

发布:2023-01-05 09:06:40 59


为网友们分享了C语言相关的编程文章,网友那冷荷根据主题投稿了本篇教程内容,涉及到C语言、字符串转浮点函数、C语言 字符串转浮点函数相关内容,已被248网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

C语言 字符串转浮点函数

  字符串不仅可以转换为整数,也可以转换为浮点数,字符串转浮点数函数原型如下:

     float __cdecl __mingw_strtof (const char * __restrict__, char ** __restrict__);
     double __cdecl __mingw_strtod (const char * __restrict__, char ** __restrict__);

  strtof函数返回值是一个单精度浮点数,strtod返回值是一个双精度浮点数。

  首先来看strtof函数,它的参数有两个。第一个参数指向要解释的以空字符结尾的字节字符串。第二个参数指向数字后的第一个字符。

  该函数首先丢弃尽可能多的空白字符,直到找到第一个非空白字符为止。然后从该字符开始,采用与浮点字面量类似的语法,尽可能多地使用有效的字符,并将其解释为数值。指向最后一个有效字符之后的字符串其余部分的指针存储在函数第二个参数中。

有效的浮点值可以是以下值之一:

十进制浮点表达式。它由以下部分组成:

  • (可选)加号或减号
  • 非空十进制数字序列可选地包含小数点字符(由当前C确定locale)(定义有效数字)
  • (可选),e或者E跟随可选的负号或加号和非空序列的十进制数字(定义指数)

二进制浮点表达式。它由以下部分组成:

(可选)加号或减号

  • 0x0X
  • 非空的十六进制数字序列可选地包含小数点字符(由当前C确定locale)(定义有效数字)
  • (可选),p或者P跟随可选的负号或加号和非空序列的十进制数字(定义指数)

无穷大表达式。它由以下部分组成:

  • (可选)加号或减号
  • INF或者INFINITY无视事件

非数字表达式。它由以下部分组成:

  • (可选)加号或减号
  • NANNAN(char_sequence)忽略该NAN部分的情况。char_sequence只能包含字母数字字符。结果是静态的NaN浮点值。

任何其他可能被当前安装的C接受的表达式 locale

  下面通过一个简单的例子演示strtof函数的用法。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
	char str[30] = "-123.456    5.672451e3  acde";
	char *pEnd;
	float ret1,ret2;

	ret1 = strtof(str, &pEnd);
	ret2 = strtof(pEnd, &pEnd);
	printf("数字1是: %.3f\n", ret1);
	printf("数字2是: %.3f\n", ret2);
	printf("字符串部分是: %s \n", pEnd);

	return 0;
}

  代码运行结果如下:

image.png

  在转换数字的过程中,遇到空白字符函数就会退出。同时函数的第二个参数会存储退出的位置,当再次调用函数的时候,就会接着上次退出的位置继续转换。

strtod函数和strtof函数用法基本一样,可以直接在上面程序的基础上修改。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
	char str[30] = "-123.456   5.672451e3  acde";
	char *pEnd;
	double ret1,ret2;

	ret1 = strtod(str, &pEnd);
	ret2 = strtod(pEnd, &pEnd);
	printf("数字1是: %lf\n", ret1);
	printf("数字2是: %lf\n", ret2);
	printf("字符串部分是: %s \n", pEnd);
        
	return 0;
}

  将返回值的类型修改为double类型就可以了,执行结果如下:

image.png

 到此这篇关于C语言实现字符串转浮点函数的示例的文章就介绍到这了,更多相关C语言 字符串转浮点函数内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

  • python是c语言开发的吗

    python是c语言开发的吗

    发布:2022-07-07

    给网友们整理关于python的教程,python是c语言开发的。Python本身被设计为可扩展的,并非所有的特性和功能都集成到语言核心,Python提供了丰富的API和工具,以便程序员能够轻松地使用C、C++、Cython来编写扩展模块。


  • C语言中for循环问题(一个小坑需注意)

    C语言中for循环问题(一个小坑需注意)

    发布:2022-09-14

    给大家整理了关于C语言的教程,这篇文章主要给大家介绍了关于C语言中for循环问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧


  • C语言多线程服务器的实现实例

    C语言多线程服务器的实现实例

    发布:2022-07-12

    给网友们整理关于C语言的教程,这篇文章主要介绍了C语言多线程服务器的实现实例,文章用实例讲解的很清楚,有对这方面不太懂的同学可以参考下


  • 关于python和c语言学哪个好

    发布:2020-03-14

    现在很多外国的初学者都使用python作为编程语言,主要是python见效快,并且可以使用高级端口,c语言是比较低层的,一般不建议学习,学习起来也是比较枯燥。


  • C语言中strcmp的实现原型

    发布:2022-06-27

    给大家整理一篇关于C语言的教程,这篇文章主要介绍了C语言中strcmp的实现原型的相关资料,这里提供实例帮助大家理解这部分内容,希望能帮助到大家,需要的朋友可以参考下


  • c语言中malloc、realloc与calloc 的区别以及联系

    发布:2022-06-23

    给大家整理了关于c语言的教程,以下是对c语言中的malloc函数,realloc函数与calloc函数的区别以及它们之间的联系进行了介绍,需要的朋友可以过来参考下


  • C语言实现单链表实现方法

    C语言实现单链表实现方法

    发布:2022-10-27

    给网友们整理关于C语言的教程,这篇文章主要介绍了C语言实现单链表实现方法的相关资料,链表分为单向链表、双向链表、循环链表,需要的朋友可以参考下


网友讨论