#include #include #include char **fizzbuzz(int max) { char **array = calloc(max, sizeof(char *)); char buffer[max]; memset(buffer, '\0', max); for (unsigned int i = 0; i < max; i++) { if (i % 2 != 0 && i % 5 != 0) { snprintf(buffer, max, "%u", i); goto add_to_array; } if (i % 2 == 0) { strcat(buffer, "Fizz"); } if (i % 5 == 0) { strcat(buffer, "Buzz"); } add_to_array: { char *tmp = calloc(strlen(buffer) + 1, sizeof(char)); strcpy(tmp, buffer); array[i] = tmp; buffer[0] = '\0'; } } return array; } void printArray(int length, char **array) { for (unsigned int i = 0; i < length; i++) { printf("%s\n", array[i]); } } int main() { char **array = fizzbuzz(100); printArray(100, array); for (int i = 0; i < 100; i++) { free(array[i]); } free(array); }