C语言char类型字符串里的数字转换到int就变成0了,六个变了五个,看不出问题

char字符串里都是数字,想转换成int类型进行计算,结果转换出来就是一堆0。
没有报错

#include 
#include 
//Ax+By=C
//Dx+Ey=F
//x=(CE-BF)/(AE-bD)
//y=(CD-AF)/(BD-aE)
int main(){
    char A[] = "";
    char B[] = "";
    char C[] = "";
    char D[] = "";
    char E[] = "";
    char F[] = "";
    printf("请按照以下格式输入方程组 Ax+By=C;Dx+Ey=F\n");
    char str[32] = "";
    scanf("%s",str);
    printf("方程组为 %s\n", str);
    sscanf(str,"%[^x]",A);
    printf("%s\n", A);
    sscanf(str,"%*[^+]+%[^y]",B);
    printf("%s\n", B);
    sscanf(str,"%*[^=]=%[^;]",C);
    printf("%s\n", C);
    sscanf(str,"%*[^;];%[^x]",D);
    printf("%s\n", D);
    sscanf(str,"%*[^;]%*[^+]+%[^y]",E);
    printf("%s\n", E);
    sscanf(str,"%*[^;]%*[^=]=%s",F);
    printf("%s\n", F);
    int num1, num2, num3, num4, num5, num6, x, y;
    num1 = atoi(A);
    num2 = atoi(B);
    num3 = atoi(C);
    num4 = atoi(D);
    num5 = atoi(E);
    num6 = atoi(F);
    printf("%d\n",num1);
    printf("%d\n",num2);
    printf("%d\n",num3);
    printf("%d\n",num4);
    printf("%d\n",num5);
    printf("%d\n",num6);
    //x = (num1 * num5 -num2 * num6) / (num1 * num5 - num2 * num4);
    //printf("%d,",x);
    //x=(CE-BF)/(AE-bD)
    //y=(CD-AF)/(BD-aE)
    return 0;
}

img

尝试了这样写,结果成功了,但原算法出了什么问题呢

#include
#include
int main()
{
     char b[18];
     int num;
     scanf("%s",b);//对char型数组进行赋值 如:123456789
     num = atoi(b);
     printf("%d",num);
     int C = num + 10;
     printf("%d",C);
     
     
    return 0;
 } 

img


其实就是提取数字计算,但系数为1的情况也没啥思路,是不是要用if,但怎么检测呢,刚学实在没啥见识

char A[] = ""; char B[] = "";char C[] = "";char D[] = "";char E[] = "";char F[] = ""; 字符串定义问题,改为:char A[4],B[4],C[4],D[4],E[4],F[4];
修改如下,供参考:

#include <stdio.h>
#include <stdlib.h>
//Ax+By=C
//Dx+Ey=F
//x=(CE-BF)/(AE-bD)
//y=(CD-AF)/(BD-aE)
int main(){
    char A[4] = ""; //修改
    char B[4] = ""; //修改
    char C[4] = ""; //修改
    char D[4] = ""; //修改
    char E[4] = ""; //修改
    char F[4] = ""; //修改
    printf("请按照以下格式输入方程组 Ax+By=C;Dx+Ey=F\n");
    char str[32] = "";
    scanf("%s",str);
    printf("方程组为 %s\n", str);
    sscanf(str,"%[^x]",A);
    printf("%s\n", A);
    sscanf(str,"%*[^+]+%[^y]",B);
    printf("%s\n", B);
    sscanf(str,"%*[^=]=%[^;]",C);
    printf("%s\n", C);
    sscanf(str,"%*[^;];%[^x]",D);
    printf("%s\n", D);
    sscanf(str,"%*[^;]%*[^+]+%[^y]",E);
    printf("%s\n", E);
    sscanf(str,"%*[^;]%*[^=]=%s",F);
    printf("%s\n", F);
    int num1, num2, num3, num4, num5, num6, x, y;
    num1 = atoi(A);
    num2 = atoi(B);
    num3 = atoi(C);
    num4 = atoi(D);
    num5 = atoi(E);
    num6 = atoi(F);
    printf("%d\n",num1);
    printf("%d\n",num2);
    printf("%d\n",num3);
    printf("%d\n",num4);
    printf("%d\n",num5);
    printf("%d\n",num6);
    //x = (num1 * num5 -num2 * num6) / (num1 * num5 - num2 * num4);
    //printf("%d,",x);
    //x=(CE-BF)/(AE-bD)
    //y=(CD-AF)/(BD-aE)
    return 0;
}

第一种办法:通过charAt(i),把字符串的每位变成char型,然后用当前字符减去字符0 (temp_char-'0'),得到当前字符的int值。

第二种办法:把字符再转成字符串,然后再强制转换成int型
如有帮助请采纳,求求了QAQ。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^