C语言处理字符串整数转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq1169091731/article/details/83067116
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int count(int n);
char* itoaa(int n);
void reverse(char *s, int length);
int atoii(char *s);
int _pow(int base, int n);

int main()
{
        // 整数转字符串
    int n;
    scanf_s("%d", &n);
    char *s = itoaa(n);
    printf("%s\n", s);

       // 字符串转整数
    char s[20] = {'\0'};
    scanf("%s",s);
    int num =  atoii(s);
    printf("%d\n", num);
    system("pause");

    return 0;
}

// 计算整数 n 的位数
int count(int n)
{
    int t = 0;
    do {
        n /= 10;  
        t++;
    } while (n > 0);
    return t;
}
// 整数转字符串
char* itoaa(int n)   // 1234 
{
    int num =count(n);
    char * chs = (char *)malloc(sizeof(char)*(num+1));
    int i = 0,t;
    do {
        t= n % 10;
        chs[i++] = t+'0';
        n /= 10;
    } while (n > 0);
    reverse(chs, num);// 逆转,将 4321 逆转成 1234
    chs[num] = '\0';
    return chs;
}
// 将字符数组 s 颠倒
void reverse(char *s,int length ) {
    int mid = length / 2;
    for (int i = 0; i < mid; i++) {
        char t = s[i];
        s[i] = s[length - i-1];
        s[length - i -1] = t;
    }
}

// 字符串转整数 "123242"
int atoii(char *s) {
    char *p = s;
    while (*p) { p++; }
    // *p == '\0'
    int sum = 0,t=0;
    p--;
    while (p >= s) {
        sum += ((*p - '0')* _pow(10, t));
        t++;
        p--;
    }
    return sum;
}
// 计算 base ^n 
int _pow(int base, int n) {
    int result = 1;
    while (n > 0) {
        result*=base;
        n--;
    }
    return result;
}

猜你喜欢

转载自blog.csdn.net/qq1169091731/article/details/83067116