atoi & itoa

    技术2022-05-11  52

    #include <iostream>using namespace std;

    #define SIZE 100void  itoa(int n, char s[]);int atoi (char s[]);

    int main(void ){    int n; char s[SIZE]; char s2[] = "12p"; n = -999;    itoa (n,s); cout << atoi(s2) << endl; return 0;}void itoa (int n, char s[]){ int i,j,sign;  if((sign=n)<0)//记录符号  n=-n;//使n成为正数    i=0; do{  s[i++]=n+'0';//取下一个数字 }while ((n/=10)>0);//删除该数字  if(sign<0)  s[i++]='-'; s[i]='/0'; for(j=i;j>=0;j--)//生成的数字是逆序的,所以要逆序输出  printf("%c",s[j]); printf("/n");}int atoi (char s[]){ int i,n,sign;  for(i=0;isspace(s[i]);i++)//跳过空白符  ; sign=(s[i]=='-')?-1:1; if(s[i]=='+'||s[i]==' -')//跳过符号  i++; for(n=0;isdigit(s[i]);i++)  n=10*n+(s[i]-'0');//将数字字符转换成整形数字 return sign *n;}

    #include <iostream>using namespace std;

    char *itoa(int val, char *buf, int radix){ char *p, *first, temp; int digital; p = buf;  if (val < 0) {  *p++ = '-';  val = -val; }  first = p;  do {  digital = val%radix;  val /= radix;  if (digital > 9)  {   *p++ = (char)(digital - 10 + 'A');  }  else  {   *p++ = (char)(digital + '0');  } }while(val > 0);  *p-- = '/0';  do  {  temp = *p;  *p = *first;  *first = temp;  p--;  first++; }while(first < p);  return buf;}

    void main(void){ int a = 255; int radix = 16; char str[64]; itoa(a, str, radix); cout << str << endl;}


    最新回复(0)