char与int的转化整体可以用atoi,局部的话可以自己转化一下

#include<stdio.h>
#include<string.h>
#include <stdlib.h>

char str1[10001] = {0};
char str2[10001] = {0};
int sum[10001] = {0};

int chartoint(char a)
{
    return (int)(a-'0');
}

int main()
{
    int i,j,k;//分别表示字符串1字符串2和新的字符串的下标
    int m = 0;//进位
    gets(str1);
    gets(str2);
    int len1 = strlen(str1);
    int len2 = strlen(str2);
    i = len1-1;
    j = len2-1;
    k = 0;
    while(i>=0 && j>=0)
    {
    //直接使用(int)强转不能得到想要的数值
        //sum[k++] = ((int)str1[i] + (int)str2[j] + m)%10;
        sum[k++] = (chartoint(str1[i]) + chartoint(str2[j]) + m)%10;
        //m = ((int)str1[i] + (int)str2[j] + m)/10;
        m = (chartoint(str1[i]) + chartoint(str2[j]) + m)/10;
        i--;
        j--;
    }
    if(i == -1 && j == -1)
    {
        if(m != 0)
        {
            sum[k++] = m;
        }
    }
    else if(i == -1)
    {
        while(j >= 0)
        {
            sum[k++] = (chartoint(str2[j]) + m)%10;
            m = (chartoint(str2[j]) + m)/10;
            j--;
        }
        if(m != 0)
        {
            sum[k++] = m;
        }
    }
    else
    {
        while(i >= 0)
        {
            sum[k++] = (chartoint(str1[i]) + m)%10;
            m = (chartoint(str1[i]) + m)/10;
            i--;
        }
        if(m != 0)
        {
            sum[k++] = m;
        }
    }
    //偷懒直接一位一位输出
    for(i=k-1; i>=0; i--)
    {
        printf("%d",sum[i]);
    }
    printf("\n");
    return 0;
}