当前位置:主页 > 软件编程 > C代码 >

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

时间:2023-01-06 09:04:21 | 栏目:C代码 | 点击:

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

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

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

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

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

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

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

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

(可选)加号或减号

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

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

任何其他可能被当前安装的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

您可能感兴趣的文章:

相关文章