字符串与数字的互转,atoi \itoa

来源:互联网 发布:加工中心直接图纸编程 编辑:程序博客网 时间:2024/05/16 06:44

题目:

字符串与数字的互转,atoi \itoa

Code(C):

atoi

#include<stdio.h>#include<stdlib.h>int StrToInt(char *s);  void main(){char s[30];int n;printf("请输入一个字符串\n");gets(s);n = StrToInt(s);printf("字符串%s转化为数字是%d\n",s,n);}int StrToInt(char *s){int num = 0,i = 0,flag = 1;if(s == NULL){printf("输入的字符串指针为0\0");exit(0);}if(s[0] == '\0'){printf("字符串为空\n");exit(0);}if(s[0] == '-'){flag = -1;i++;}else if(s[0] == '+'){flag = 1;i++;}while(s[i] != '\0'){if(s[i] >= '0' && s[i] <= '9'){num = num*10+s[i]-'0';i++;}else{printf("输入不合法!\n");exit(0);}}if(flag == -1)return (-1)*num;else return num;}


itoa

#include<stdio.h>#include<stdlib.h>#include<math.h>void IntToStr(int n,char *s);void reverse(char *s,int start,int end);void main(){int n;char s[12];     //对于int,12位就可以了printf("请输入一个整数,实行整数转化为字符串\n");scanf("%d",&n);IntToStr(n,s);printf("整数%d转化为字符串为%s\n",n,s);}void IntToStr(int n,char *s){int m = abs(n),i = 1;if(s == NULL)exit(0);if(n == 0)       //输入为0要特殊对待s[i++] = '0';while(m){s[i++] = m%10+'0';m /= 10;}s[i] = '\0';      //字符串的结束标志reverse(s,1,i-1); //字符串反转if(n >= 0)        //s[0]存放符号位s[0] = ' ';elses[0] = '-';}void reverse(char *s,int start,int end){char temp;while(start < end){temp = s[start];s[start] = s[end];s[end] = temp;start++;end--;}}