Неисправность печати карты / фильтра / уменьшить функции в C
Мне очень трудно понять, почему я продолжаю получать исключение, когда моя функция с легкостью возвращает значение, но как только я пытаюсь распечатать результат, это дает мне необработанную ошибку исключения (см. Ниже). Я новичок в C так что я смотрел на все с точки зрения Java, и я не могу понять это.
Вот мой относительный код (Reduce принимает связанный список, который представляет собой массив узлов, содержащий значение типа int и указатель на следующий узел в списке, последний узел указывает на ноль)
int reduce(int (*func)(int v1, int v2), LinkedListP list, int init){
int i, sum;
struct node *first, *second;
sum = 0;
first = list->head;
second = list->head->next;
for(i = 0;i < list->count; i+=2)
{
//checks to see if there are values in the list at all
if(first == NULL)
{
return sum;
}
//if first value is good, and the second value is null, then sum the final one and return the result
else if(second == NULL)
{
sum += func(first->value, init);
return sum;
}
//otherwise there is more to compute
else
{
sum += func(first->value, second->value);
}
//first now points to the next node that seconds node was pointing to
first = second->next;
//if the first link is null, then there is no need to assign something to the second one
if(first == NULL){
return sum;
}
else{
second = first->next;
}
}
}
и в основном я передаю указатель на функцию sum, которая просто добавляет два значения вместе
простой код
newLink = new_LinkedList();
int(*reduceFunc)(int, int);
reduceFunc = sum;
result = reduce(sum, newLink, 0);
printf("Total is : %s", result );
теперь, когда все это бросает ВВВВВВВВ
Необработанное исключение в 0x1029984f в ExamTwo.exe: 0xC0000005: расположение чтения нарушения доступа 0x00000015.
2 ответа
Ваша функция limit () возвращает int, но вы даете printf() код формата для строки. Пытаться
printf("Total is : %d", result );