首页 > 解决方案 > 任意特定整数 c 程序

问题描述

所以,最近我问了关于任意特定整数计算器程序的问题。它扫描两个字符串,应该计算它的和和差、乘法、除法和模数。到目前为止,我认为我真的很接近完成求和差和乘法函数。这是我的代码对于添加功能的样子:

void sum(char* a, char* b)
{
    //initializing values
    int len1,len2,i;
    int carry=0;
    char *r;
    // counting the digits
    len1=strlen(a);
    len2=strlen(b);
    // checking which array is longer
    if (len1>=len2)
    {
        // if first array is longer we allocate enough memory for the result
        r=(char*)malloc((len1+1)*sizeof(char));
        // starting from the LSB
        for (i=0; i<=len2; ++i)
            {   // mod 10 to extract only the last digit of the sum
                // that becomes our new digit
            *(r+len1-i)=(*(a+len1-i) + *(b+len2-i) + carry)%10;
            carry=(*(a+len1-i)+*(b+len2-i))/10;
            }
            // copying the rest of the digits
        for (i=len2+1; i<=len1; ++i)
            *(r+len1-i)=*(a+len1-i);

    }
    //case when the other number has more digits
    else
    {
         r=(char*)malloc((len2+1)*sizeof(char));
        for (i=0; i<=len1; ++i)
            {
            *(r+len2-i)=(*(a+len1-i)+*(b+len2-i)+carry)%10;
            carry=(*(a+len1-i)+*(b+len2-i))/10;
            }
        for (i=len1+1; i<=len2; ++i)
            *(r+len2-i)=*(b+len2-i);
    }
    // printing the result
    printf("The result is: \n %s \n", r);
}

问题是当我尝试在 main 中调用函数时,最终结果只会给出错误,即使在编译代码时没有任何错误。这可能是 main 的问题,所以这就是我的 main 的样子。

int main()
{
    FILE *fp;
    char *fi=NULL, *se=NULL;
    char o;
    int i=0;
    fp= fopen("/CalculatorHistory.txt", "r+");
    opening();
    fi=(char*)malloc(60*sizeof(char));
    se=(char*)malloc(60*sizeof(char));
    while(i<2)
    {
        first();
        scanf("%s", fi);
        // I am not sure when im saving pointer arrays, if it works like this
        // or i should save it in a for loop
        fprintf(fp, fi);
        oper();
        scanf(" %c", &o);
        fprintf(fp, o);
        second();
        scanf("%s", se);
        fprintf(fp, se);
        switch (o)
        {
        case '+':
            sum(fi, se);
        case  '-':
            sub(fi, se);
        case '*':
            mul(fi, se);
        case '/':
            div(fi, se);
        case '%':
            mod(fi, se);

         }
    }
    return 0;
}

我希望有人能帮助我。我很迷茫,对c编程仍然很陌生。

标签: cstringcalculatorunsigned-integer

解决方案


推荐阅读