From c9918ff51ba59e4778ec4b2c9580610faaf009ba Mon Sep 17 00:00:00 2001 From: Walt Mankowski Date: Sun, 22 Jun 2025 10:55:21 -0400 Subject: moved computation of output length to a function --- challenge-326/walt-mankowski/c/ch-2.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/challenge-326/walt-mankowski/c/ch-2.c b/challenge-326/walt-mankowski/c/ch-2.c index 415aff1ec3..7b116cac04 100644 --- a/challenge-326/walt-mankowski/c/ch-2.c +++ b/challenge-326/walt-mankowski/c/ch-2.c @@ -1,6 +1,14 @@ #include #include +size_t compute_output_len(int argc, char *argv[]) { + size_t output_len = 0; + for (int i = 1; i < argc; i += 2) + output_len += atoi(argv[i]); + + return output_len; +} + int main (int argc, char *argv[]) { if (argc % 2 != 1) { fputs("There should be an even number of parameters\n", stderr); @@ -8,10 +16,8 @@ int main (int argc, char *argv[]) { } /* compute how big the output array should be */ - size_t output_size = 0; - for (int i = 1; i < argc; i += 2) - output_size += atoi(argv[i]); - unsigned int *output = malloc(output_size * sizeof(unsigned int)); + size_t output_len = compute_output_len(argc, argv); + unsigned int *output = malloc(output_len * sizeof(unsigned int)); /* add things to the output array */ int k = 0; @@ -24,7 +30,7 @@ int main (int argc, char *argv[]) { /* print out the array */ printf("("); - for (int i = 0; i < output_size-1; i++) + for (int i = 0; i < output_len-1; i++) printf("%u, ", output[i]); - printf("%u)\n", output[output_size-1]); + printf("%u)\n", output[output_len-1]); } -- cgit