将数字字符串转化为对应数字输出(不考虑溢出)

使用c语言编写一个函数,将一个数字字符串转化为对应数字,不考虑溢出,(比如“12.34”转换为数字:12.34),考虑异常输入

思考:异常如输入字幕等等,也有可能输入‘+’,‘-’号等,

程序如下:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
double my_atof(const char* str)
{
	assert(str);
	double num = 0;
	int flag = 0;
	int point = 0;
	while (*str)
	{
		int value = 1;

		if (‘-‘ == *str && 0 == flag)
			flag = -1;
		else if (‘-‘ == *str && 1 == flag)
			flag = -1;
		else if (‘-‘ == *str && -1 == flag)
			flag = 1;
		else if (‘+‘ == *str && 0 == flag)
			flag = 1;
		if (*str == ‘.‘&&point == 0)
			point++;
		int temp = point;
		if ((*str >= ‘0‘) && (*str <= ‘9‘) && (0 == point))
			num = 10 * num + *str - ‘0‘;
		else if ((*str >= ‘0‘) && (*str <= ‘9‘) && (point > 0))
		{
			temp--;
			while (temp--)
				value = value * 10;
			num = num + (double)(*str - ‘0‘) / value;
		}
		str++;
		if (point > 0)
			point++;
	}
	if (-1 == flag)
		num = -num;
	return num;
}
int main()
{
	double n, m;
	char buffer[256];
	printf("Enter degrees: ");
	fgets(buffer, 256, stdin);
	n = my_atof(buffer);
	printf("The number is: %f \n", n);
	system("pause");
	return 0;
}

如有错误与考虑不周 敬请指正!!

时间: 2024-12-28 23:55:32

将数字字符串转化为对应数字输出(不考虑溢出)的相关文章

字符串转化为数字相加输出

设计思想:将字符串转化为数字,然后相加,最后输出和. 程序流程图: 源程序代码: public class JavaAdd { public static void main(String[] args){ String str1 = "12"; String str2 ="23"; int toInt1= 0 ; int otherInt=0 ; int taInt=0; toInt1 = Integer.parseInt(str1); otherInt = In

将字符串转化为数字的python实现

将字符串转化为数字的python实现 将字符串转化为数字的python实现,例如将字符串"1234567.8"转化为 1234567.8 这也是学习python中的一个简单的练习题,代码如下: # coding=UTF-8 将字符串转化为数字 from functools import reduce import math def char2int(s): return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9'

关于字符串转化为数字的深度优化两种算法

最近在做项目,在实际操作中发现自己在VC环境下写的字符串转化为整型的函数还是太过理想化了,或者说只能在window平台下软件环境中运行,重新给大家发两种函数方法: 第一个,就是理想化的函数,在VC环境下充分利用指针的优越性,对字符串转化为整型(同时也回答了某位网友的答案吖),实验检验通过: #include <stdio.h> #include <string.h> int rayatoi(char *str) { char *p=str; char sign=0; int num

将字符串转化为数字的函数怎么写?

一.测试篇 首先说要有哪些功能测试?(据说先写测试用例后写代码,比较高级) 1.带符号的数字且长度较短的字符串  +12,-13等 2.不带符号的数字且长度较短的字符串 2334等 3.字母和数字组合:a23 ,34fg56等 4.其他非数字非字符字符和数字或者字母的组合:==2.++1.&…(23.342——等 其他的测试用例,还未想到 暂不考虑的问题: 转化得到的整型数,超过整型数表示范围 二.函数说明 输入:+和-.数字型字符(正数.0.负数).其他 输出:对应字符串的整数 三.鲁棒性考虑

把一个字符串转化成数字表示

题目大意: 把一个字符串转化成数字表示.AAAA-->4A 解题思路: 直接统计. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 char s[100005]; 5 6 void solve() 7 { 8 int i = 0; 9 int cnt = 1; 10 char tmp = s[0]; 11 for (i = 1; s[i]; ++i) 12 { 13 if (s[i] == tmp) 14 { 15 ++cnt;

剑指offer 把字符串转化为整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0 示例1 输入 +2147483647 1a33 输出 2147483647 0 思路:字符串转化为整数的方法num = num * 10 + str[i] - '0':特殊情况:1.输入字符串为NULL: 2.输入字符串只有+/-: 3.转化的数字大于最大值或小于

将字符串转化为整数

将字符串转化为整数要考虑到很多的情况,首先对于字符串是空指针的处理,字符串开始带有'+''-'的情况,字符串中有空格等不是数字的处理,对于这些情况的处理,主要运用的方法是定义一个全局变量,在字符串中出现一些特殊情况的时候,改变全局变量的方法,作为标示符,这样就可以达到预期的效果. int symbol = -1; int fun(const char *src) {long long num = 0; int flag = 1; int symbol = 1; while (src != NUL

OC15数字字符串和集合

#import <Foundation/Foundation.h> @interface AddressCard : NSObject -(void)setName:(NSString *) theName; -(void)setEmail:(NSString *) theEmail; -(void)setfirstName:(NSString *)first lastName:(NSString *)last; //联系4 -(NSString *)firstName; -(NSString

JS中如何将字符串转化成日期 日期格式化方法

<!--     /**     * 对Date的扩展,将 Date 转化为指定格式的String     * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符     * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)     * eg:     * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-0