使用数字作为字符串的乘法

时间:2017-05-25 07:45:34

标签: c arrays string

这是我写的代码:

int MulHugeNumbers(char *a1, char *a2,char *res){

int carry=0,len1,len2,*ip,foo,i,count = 0;
char bar[4096],add[50],*cp=bar;

ip = &carry ;
if ((checkifnum(a1) == 0)||(checkifnum(a2) == 0)) return 0;
len1 = strlen(a1) - 1;
len2 = strlen(a2) - 1;
foo = len2 ;
a1 += strlen(a1) - 1;
a2 += strlen(a2) - 1;
do{
    do{
        multinums(a1,a2,cp,ip) ;
        cp++,len1--;   
        if (len1!=-1) a1--;
    }while(len1>-1) ;
    if (carry > 0) *cp++ = (char)(carry + '0');
    carry = 0,len1 = strlen(a1) - 1,a1 += strlen(a1) - 1;
    if(--len2>-1){
        a2--;
        for(i=0; i<foo-len2; i++){
            *cp++ = '0';
        }   
    }
} while(len2>-1) ;
if (carry > 0) *cp++ = (char)(carry + '0');
*cp = '\0' ;
strrev(bar) ;
printf("%s\n",bar) ;
return 1;
}

我已经创建了一个数组并且我已经存储了每个数字乘法的结果,但是我需要拆分字符串并为每个单独的乘法进行加法,以便得到我将保存到* res指针的最终结果。我有添加两个字符串并给出输出的算法,但我不知道如何分割字符串以便这样做。有什么想法吗?

例如,当我乘以127 * 215时,我将结果存储在一个名为bar的数组中:254001270635。为了解释,635是5 * 127,1270的结果是1 * 127加上一个零的结果最后为了添加1270 + 635和25400是2 * 127加上两个零的结果来进行最后的添加...我的问题是我还没有找到一种方法将长字符串分成那些3个不同的

1 个答案:

答案 0 :(得分:0)

也许使用Strtok可以帮助你“标记”字符串,这意味着要分离构成它的每个“子字符串”。