Hey,
I have stumbled upon an issue.
I've attached my code below.
I am writing a function of long numbers, and it works, it sums up the numbers.
I need it to multiply the numbers instead, and when I do it, it gives me a wrong answer...
Can you guys maybe check the code and review it for me?
Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char* verylong;
verylong add_verylong(verylong vl1, verylong vl2);
int main() {
verylong result = add_verylong("99", "888");
for (int i = 0; i < sizeof(result); i++) {
printf("%c", result[i]);
}
return 0;
}
verylong add_verylong(verylong vl1, verylong vl2) {
int len_1 = strlen(vl1);
int len_2 = strlen(vl2);
int vl1_number = 0;
int vl2_number = 0;
int mul = 1;
while (len_1 > 0) {
int x = vl1[len_1 - 1] - '0';
x = x * mul;
vl1_number = vl1_number + x;
mul *= 10;
len_1--;
}
mul = 1;
while (len_2 > 0) {
int x = vl2[len_2 - 1] - '0';
x = x * mul;
vl2_number += x;
mul = mul * 10;
len_2--;
}
int number = vl1_number + vl2_number;
int length = 0;
int temp = number;
while (temp > 0) {
length += 1;
temp /= 10;
}
verylong result = (char*)calloc(length + 1, sizeof(char));
result[length--] = '\0';
while (number > 0) {
int x = number % 10;
char c = x + '0';
result[length--] = c;
number /= 10;
}
return result;
}