В настоящее время я помогаю моему двоюродному брату с некоторыми домашними заданиями. Домашнее задание состояло в том, чтобы добавить два больших числа вместе, используя массивы, однако я столкнулся с проблемой. Всякий раз, когда я запускаю программу, она дает мне ошибку «segmentation fault (core dumped)». Это, как правило, проблемы с памятью, но я попытался контролировать размер массива результатов с помощью malloc, но безуспешно. Можете ли вы заметить мою ошибку?Ошибка сегментации (сбрасывание ядра) Добавление массивов
Источник:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i, j, h;
int a[] = {0, 4, 5, 9, 2, 7, 4, 9, 5, 7, 1, 6, 2, 0, 3, 0};
int b[] = {0, 2, 7, 8, 4, 9, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int *result = (int *) malloc(17*sizeof(int));
for (i = 1; i < sizeof(result); i++) {
if (a[i] + b[i] > 9){
result[i] = a[i] + b[i] - 10;
result[i-1] += 1;
}
else{
result[i] = a[i] + b[i];
}
for (j = 0; h < sizeof(result); j++) {
if (result[j] > 9){
result[j] -= 10;
result[j-1] += 1;
}
}
}
printf("Result: ");
for (h = 0; h < sizeof(result); h++) {
printf("%d", result[h]);
}
}
'for (i = 1; i
BLUEPIXY
Учитывая, что вы получили 'result [j-1]' и запустили цикл с помощью 'j = 0', вы фактически можете« переполнить »ваш массив. Вставьте отладочные операторы: напечатайте 'i' и' j' на каждом этапе и посмотрите, где они выходят за пределы диапазона. –
'for (j = 0; h
alain