Почему возникает ошибка munmap_chunk(): invalid pointer?
Я начинающий в Си, не знаю пока многих тонкостей языка. Уже наверное больше часа не могу никак понять, где я нафейлил, возникает ошибка munmap_chunk(): invalid pointer:
#include <stddef.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
char *series_sum(const size_t n) {
if(n == 0) {
return "0.00"; // Btw 0 is not a natural number :)
}
float sum = 0;
for(size_t i = 0; i < n; i++) { // It's simple but I don't care
sum = sum + 1.0 / (1.0 + i * 3.0);
}
int d = sum > 1 ? (int)ceil(log10(sum)) : 1;
char *s = malloc(sizeof(char) * (d + 4));
sprintf(s, "%.2f", sum);
return s;
}
Уже кучу раз всё перепроверил, вроде всё логично, проверял алгоритмы, выдаёт правильный результат, но иногда тест просто заваливается без указания причины.
Мне нужно вернуть форматированную строку, число и два знака после запятой.
Ответы (1 шт):
Автор решения: George Glebov
→ Ссылка
Этот вариант работает, без извращений в виде "0.00".
#include <stddef.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
char *series_sum(const size_t n) {
float sum = 0;
for(size_t i = 0; i < n; i++) { // It's simple but I don't care
sum = sum + 1.0 / (1.0 + i * 3.0);
}
char *s = malloc(sizeof(char) * 5);
sprintf(s, "%.2Lf", sum);
return s;
}