【C语言】编写函数实现库函数atof

//编写函数实现库函数atof
#include <stdio.h>
#include <assert.h>
#include <ctype.h>
#include <math.h>
double calculate(const char *src, int flag)
{
	double num = 0.0;
	int n = 0;
	int count = 0;
	while (*src)
	{
		if ((*src >= ‘0‘) && (*src <= ‘9‘))//推断输?入是否为?非数组字符
		{
			num = num * 10 + (*src - ‘0‘);
			src++;
			if (n)
			{
				count++;
			}
		}
		else if (*src == ‘.‘)
		{
			n = 1;
			src++;
		}
		else
		{
			num = 0;
			break;
		}
	}
	if (n)
	{
		num = num / powl(10,count);
	}
	return flag * num;
}
double str_to_int(const char *str)
{
	double num = 0.0;
	int flag = 1;
	if (str != NULL && *str != ‘\0‘)
	{
		while (isspace(*str))
		{
			str++;
		}
		if (*str == ‘+‘)
			str++;
		else if (*str == ‘-‘)
		{
			str++;
			flag = -1;
		}
		 if (*str != ‘\0‘)
		{
			num = calculate(str, flag);
		}
	}
	return num;
}
int main()
{
	printf("%f\n", str_to_int(" +23.45"));
	printf("%f\n", str_to_int(" -2.345"));
	printf("%f\n", str_to_int("+234.5"));
	printf("%f\n", str_to_int("-2345.44"));
	printf("%f\n", str_to_int("2345"));
	printf("%f\n", str_to_int("-1111.11"));
	printf("%f\n", str_to_int(""));
	printf("%f\n", str_to_int("123ab"));
	return 0;
}
时间: 2024-12-18 13:49:19

【C语言】编写函数实现库函数atof的相关文章

【C语言】编写函数实现库函数atoi,把字符串转换成整形

//编写函数实现库函数atoi,把字符串转换成整形 #include <stdio.h> #include <string.h> int my_atoi(const char *src) { int flag=1; int sum=0; while (*src) { if (*src == ' ') src++; else if (*src == '+') { src++; flag = 1; } else if(*src == '-') { src++; flag = -1; }

用C语言编写函数,实现strlen计算字符串长度的功能

本文介绍三种方法: 1.循环计数法,(设置一个计数器). 2.递归法,(函数调用自身进行计算) 3.指针-指针法,(库函数使用的是此方法) 现在列入程序: 方法1: /* 计数法 */ int my_strlen(char *p) { int number = 0; while (*p) { number++; p++; } return number; } 方法2: /* 递归法 */ int my_strlen(char *str1) { if (*str1 != '\0') { str1+

用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。

首先,分析一下程序的思路: 1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2; 2: i++;如果s的第i个元素是'\0',即字符串的结束符,停止执行:否则,重复步骤1. 接着,给出这个程序: #include <iostream>                                    //存放了输入输出流#include <cstdio>      

用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。

函数功能: 使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,第一个参数"-a"选项执行加法,"-s"选项执行减法,"-m"选项执行乘法,"-d"选项执行除法,后面两个参数为操作数. 思考: 三个参数中两个操作数不用处理,直接传入即可,而对于第一个操作数就需要处理了,以保证传入的参数是"'-a','-s','-m','-d'",以便于处理计算,第一步将操作符号转化为上述赋好,然后将参数以及操

【原创】用第三方语言编写PostgreSQL 存储函数

在PostgreSQL里,所有的存储函数需求都可以用PLPGSQL来实现.同时也支持用第三方语言来编写,这个就得看自己哪个方面熟练了.不过要注意的一点是 PLPGSQL的效率怎么着都比其他第三方语言来的高效.比如,简单的插入表的存储函数: CREATE OR REPLACE FUNCTION ytt.insert_plpgsql(f_num integer) RETURNS void LANGUAGE plpgsql AS $ytt$ declare i int := 0; v_rank int

用第三方语言编写PostgreSQL 存储函数

在PostgreSQL里,所有的存储函数需求都可以用PLPGSQL来实现.同时也支持用第三方语言来编写,这个就得看自己哪个方面熟练了.不过要注意的一点是 PLPGSQL的效率怎么着都比其他第三方语言来的高效.比如,简单的插入表的存储函数: CREATE OR REPLACE FUNCTION ytt.insert_plpgsql(f_num integer) RETURNS void LANGUAGE plpgsql AS $ytt$ declare i int := 0; v_rank int

【C语言】编写函数,将一个数的指定位置置0或置1

//编写函数,将一个数的指定位置置0或置1 #include <stdio.h> unsigned int set_bit(unsigned int num, int pos, int flag) { int n = 1; n = n << (pos - 1); //将n的第pos位置1,其它全为0 if (flag == 0) { num = num&(~n); } else if (flag == 1) { num = num | n; } else printf(&q

【C语言】编写函数实现字符串旋转

//编写函数实现字符串旋转 #include <stdio.h> #include <assert.h> #include <string.h> void reverse(char *left, char *right) { char temp; assert(left); assert(right); while (right > left) { temp = *left; *left = *right; *right = temp; left++; right

【c语言】为下面的函数原型编写函数定义,这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。

/*为下面的函数原型编写函数定义: int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数. 如果字符串参数包含了任何非数字字符,函数就返回零.请不必担心算数溢出. 提示:这个技巧很简单:你每发现一个数字,把当前值乘以10,并把这个值和新的数字所代表的值相加*/ #include <stdio.h> int ascii_to_integer(char const *str) { int sum =