这是我写的代码:
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个不同的