调用函数实现整数和字符串的互转以及手动实现该功能 ----- _itoa, atoi

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 
 6 int myatoi(char *str);// 手动实现 字符串 转 整数
 7 
 8 char * myitoa(int num, char * str);// 手动实现 整数 转 字符串
 9 
10 void main()
11 {
12     char str[10] = "12345";
13     int num = atoi(str);// 字符串转换为整数
14     printf("%d\n",num);
15 
16     char newstr[100];
17     _itoa(num,newstr,10);// 整数转换为字符串
18     printf("%s\n",newstr);
19 
20     // 调用手动实现的字符串转整数的方法
21     int num1 = myatoi(str);
22     printf("%d\n",num1);
23     
24 
25     // 调用手动实现的整数转字符串的方法
26     char newstr1[100];
27     myitoa(num, newstr1);// 整数转换为字符串
28     printf("%s\n", newstr1);
29 
30     system("pause");
31 }
32 
33 // 手动实现字符串转整数
34 int myatoi(char *str)
35 {
36     char *istr = str;// 定义指针变量接收str
37     while (*istr != '\0')// 循环遍历每一个字符
38     {
39         if (!(*istr <= '9' && *istr >= '0'))// 不在0-9 之间 返回 0
40         {
41             return 0;
42         }
43         istr++;
44     }
45 
46     int lastnum = 0;// 保存最后转换的结果  并返回
47     for (int i = 0; i < strlen(str); i++)// 思路:第一位开始乘以10加后面一位 ...  "1234" = 1*10+2   *10  +3  *10 +4 =1234
48     {
49         lastnum *= 10;
50         lastnum += str[i] - '0';// 转化为整数 
51     }
52     return lastnum;
53 }
54 
55 
56 // 手动实现 整数 转 字符串
57 char * myitoa(int num, char * str)// num 为要转换的整数  接收转换后的字符并返回
58 {
59     int wei = 0;
60     for (int inum = num ; inum; inum/=10)// 循环统计整数的位数
61     {
62         wei++;
63     }
64 
65     for (int i = wei-1;num; num/=10,i--)
66     {
67         str[i] = num % 10 + 48; // 将整数转化为字符   如:1+48='1'  '0' = 48
68     }
69     str[wei] = '\0';
70     return str;
71 }

 

posted on 2015-05-13 10:49  Dragon-wuxl  阅读(152)  评论(0)    收藏  举报

导航