Я пытаюсь создать функцию, которая суммирует 2 строковых числа, например «888» и «9879», возвращающих «10767».
Проблема заключается в том, что при доступе к возвращаемому значению из main я получаю мусор.
typedef char* verylong;
verylong add_verylong(verylong vl1, verylong vl2);
int main(){
verylong result = add_verylong("888", "9879");
printf("%s\n", result);
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;
}
length++;
char string[length+1];
verylong result = string;
result[length--] = '\0';
while(number > 0){
int x = number % 10;
char c = x +'0';
result[length] = c;
length--;
number /= 10;
}
return result;
}
В чем может быть причина этой проблемы?