调用函数实现整数和字符串的互转以及手动实现该功能 ----- _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) 收藏 举报
浙公网安备 33010602011771号