atoi(),itoa() ,atol(),atof ()的实现

atoi(将字符串转换成整型数):atoi(const char *nptrnt )

函数说明 : atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回。

itoa(将整型数转换成字符串):char *itoa( int value, char *string,int radix);

  原型说明:

  value:欲转换的数据。

  string:目标字符串的地址。

  radix:转换后的进制数,可以是10进制、16进制

 1 #include<iostream>
 2 using namespace std;
 3 int atoi1(char *s)
 4 {
 5     int sign=1,num=0;
 6     if(*s==‘-‘)
 7         sign=-1;
 8     s++;
 9     while((*s)!=‘\0‘)
10     {
11         num=num*10+(*s-‘0‘);
12         s++;
13     }
14     return num*sign;
15 }
16 char *itoa(int val, char *buf, unsigned radix)
17 {
18     char   *p;
19     char   *firstdig;
20     char   temp;
21     unsigned   digval;
22     p = buf;
23     if(val <0)
24     {
25         *p++ = ‘-‘;
26         val = (unsigned long)(-(long)val);
27     }
28     firstdig = p;
29     do{
30         digval = (unsigned)(val % radix);
31         val /= radix;
32
33         if  (digval > 9)
34             *p++ = (char)(digval - 10 + ‘a‘);
35         else
36             *p++ = (char)(digval + ‘0‘);
37     }while(val > 0);
38
39     *p-- = ‘\0 ‘;
40     do{
41         temp = *p;
42         *p = *firstdig;
43         *firstdig = temp;
44         --p;
45         ++firstdig;
46     }while(firstdig < p);
47     return buf;
48 }
49 int main()
50 {
51     char *s="-16734",buf[20];
52     int a=34567;
53     cout<<atoi1(s)<<endl;
54     cout<<itoa(a,buf,10)<<endl;
55
56     return 0;
57 }

atof(将字符串转换成浮点型数);double atof(const char *nptr);

函数说明 : atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。

 1 #include<iostream>
 2 using namespace std;
 3
 4 double myatof(const char* sptr)
 5 {
 6     double temp=10;
 7     bool ispnum=true;
 8     double ans=0;
 9     if(*sptr==‘-‘)//判断是否是负数
10     {
11         ispnum=false;
12     }
13     sptr++;
14     while(*sptr!=‘\0‘)//寻找小数点之前的数
15     {
16         if(*sptr==‘.‘)
17         {
18             sptr++;
19             break;
20         }
21         ans=ans*10+(*sptr-‘0‘);
22         sptr++;
23     }
24     while(*sptr!=‘\0‘)//寻找小数点之后的数
25     {
26         ans=ans+(*sptr-‘0‘)/temp;
27         temp*=10;
28         sptr++;
29     }
30     if(ispnum)
31         return ans;
32     else
33         return ans*(-1);
34 }
35 int main()
36 {
37     char *s="-167.678";
38     cout<<myatof(s)<<endl;
39     return 0;
40 }

atol(将字符串转换成长整型数):long atol(const char *nptr);

函数说明 : atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(‘\0‘)才结束转换,并将结果返回。

 1 #include<iostream>
 2 #include <stdlib.h>
 3 #include <ctype.h>
 4 using namespace std;
 5
 6 #define N 50
 7
 8 long my_atol(const char *nptr)
 9 {
10     int c;
11     long total = 0;
12     int sign;
13     while(isspace((int)(unsigned char)*nptr))//跳过前面的空格
14         ++nptr;
15     c = (int)(unsigned char)*nptr++;
16     sign = c;
17     if(c == ‘-‘ || c == ‘+‘)
18         c = (int)(unsigned char) *nptr++;
19
20     while(isdigit(c))
21     {
22         total = 10 * total + c- ‘0‘;
23         c = (int)(unsigned char)*nptr++;
24     }
25     if(sign == ‘-‘)
26         return -total;
27     else
28         return total;
29 }
30
31 int main(void)
32 {
33     char str[N];
34     cout<<"Enter a string:"<<endl;;
35     fgets(str,N,stdin);
36     cout<<my_atol(str)<<endl;
37     return 0;
38 }  
时间: 2024-10-12 14:24:34

atoi(),itoa() ,atol(),atof ()的实现的相关文章

c/c++面试题(8)memcopy/memmove/atoi/itoa

1.memcpy函数的原型: void* memcpy(void* dest,cosnt void* src,size_t n); 返回值:返回dest; 功能:从源内存地址src拷贝n个字节到dest内存地址. 这里必须要求源地址的内存和目标地址的内存没有覆盖,如果有覆盖结果是未定义的. #include <stdio.h> #include <assert.h> void* my_memcpy(void* dest,const void* src,size_t n) { ass

转载 C++常用库函数atoi,itoa,strcpy,strcmp的实现

C++常用库函数atoi,itoa,strcpy,strcmp的实现 C语言字符串操作函数 1. 字符串反转 - strRev2. 字符串复制 - strcpy3. 字符串转化为整数 - atoi4. 字符串求长 - strlen5. 字符串连接 - strcat6. 字符串比较 - strcmp7. 计算字符串中的元音字符个数8. 判断一个字符串是否是回文1. 写一个函数实现字符串反转 版本1 - while版 void strRev(char *s){    char temp, *end 

Linux下c++中的atoi、atol、atoll、atof函数调用实例

本文中调用的四个函数如下: atoi函数:将字符串转化为int类型变量 atol函数:将字符串转化为long类型变量 atoll函数:将字符串转化为long long类型变量 atof函数:将字符串转化为double类型变量 这些函数的转化过程,都是将一个字符串的可读部分取到变量中 遇到不可读的部分,则直接终止读取 调用示例: #include <stdio.h> #include <stdlib.h> #define Seperate(); printf("\n====

常用的函数:atoi,itoa,atof,_ttoi等

出自http://blog.csdn.net/zzyoucan/article/details/10260093 atoi---ASCII to integer,将字符串转换成整形,从数字或正负号开始转换,一直到非数字为止 #include <stdlib.h> #include <stdio.h> int main(void) { float n; char *str = "12345.67"; n = atoi(str); printf("stri

AToI&amp;IToA

//AToI #include <stdio.h> #define SIZE 200 int data[SIZE] = {4,5,6,7}; int AToI(int N,int Base) { int ret = 0; for(int i=0;i<N;i++) { ret = ret * 10 + data[i]; } return ret; } int main(void) { int num = AToI(4,10); printf("%d",num); ret

字符串转换atof atoi atol gcvt strtod strtol strto ul toascii tolower toupper

atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul 表头文件 #include <stdlib.h> 定义函数 double atof(const char *nptr); 函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转 换,并将结果返回.参数nptr字符串可包含正负号.小数点或E(e)来表示指数部分,如123.456或123e-2

atoi和itoa

itoa()函数的原型为: char *itoa( int value, char *string,int radix);itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转换数字时所用的基数.在例中,转换基数为10.10:十进制:2:二进制...itoa并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf. 是Windows平台下扩展的,标准库中有sprintf,功能比这个更强,用法跟printf类似

atof

atof 1. 函数名: atof 功 能: 把字符串转换成浮点数 名字来源:ascii to floating point numbers 的缩写 用 法: double atof(const char *nptr); #include <stdlib.h> #include <stdio.h> int main() { float f; char *str = "12345.67"; f = atof(str); printf("string =

atof函数

1. 函数名: atof 功 能: 把字符串转换成浮点数 名字来源:ascii to floating point numbers 的缩写 用 法: double atof(const char *nptr); 举例: #include <stdlib.h> #include <stdio.h> int main(void) { double d; char *str = "12345.67"; d = atof(str); printf("strin

C语言atof()函数:将字符串转换为double(双精度浮点数)

头文件:#include <stdlib.h> 函数 atof() 用于将字符串转换为双精度浮点数(double),其原型为:double atof (const char* str); atof() 的名字来源于 ascii to floating point numbers 的缩写,它会扫描参数str字符串,跳过前面的空白字符(例如空格,tab缩进等,可以通过 isspace() 函数来检测),直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时('\0')才结束转换,并将结果