我来问道无与说 2023-01-31 22:30 采纳率: 100%
浏览 50
已结题

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

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

#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[] = "";
    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<stdio.h>
#include<stdlib.h>
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,但怎么检测呢,刚学实在没啥见识

  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-01-31 22:43
    关注

    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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月11日
  • 已采纳回答 2月3日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么