From 728a7c5bd8f6b2d1137cfa2c711d01d1d248dfe3 Mon Sep 17 00:00:00 2001 From: Dan Buch Date: Mon, 19 Sep 2011 22:58:45 -0400 Subject: [PATCH] using separate func for printing different formats, but still need to write different funcs for different ways of looping? --- ex15.c | 55 ++++++++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 39 deletions(-) diff --git a/ex15.c b/ex15.c index d3f8626..a7bf3c5 100644 --- a/ex15.c +++ b/ex15.c @@ -1,5 +1,16 @@ #include + +void print_names_ages(int count, char *names[], int ages[], const char *fmt) +{ + int i; + for(i = 0; i < count; i++) { + printf(fmt, names[i], ages[i]); + } + printf("---\n"); +} + + int main(int argc, char *argv[]) { // create two arrays we care about @@ -10,47 +21,13 @@ int main(int argc, char *argv[]) }; // safely get the size of ages int count = sizeof(ages) / sizeof(int); - int i = 0; - - // first way using indexing - for(i = 0; i < count; i++) { - printf("%s has %d years alive.\n", - names[i], ages[i]); - } - - printf("---\n"); - - // setup the pointers to the start of the arrays - int *cur_age = ages; - char **cur_name = names; - // second way using pointers - for(i = 0; i < count; i++) { - printf("%s is %d years old.\n", - *(cur_name+i), *(cur_age+i)); - } - - printf("---\n"); - - // third way, pointers are just arrays - for(i = 0; i < count; i++) { - printf("%s is %d years old again.\n", - cur_name[i], cur_age[i]); - } - - printf("---\n"); - - // fourth way with pointers in a stupid complex way - for(cur_name = names, cur_age = ages; - (cur_age - ages) < count; - cur_name++, cur_age++) - { - printf("%s lived %d years so far.\n", - *cur_name, *cur_age); - } - - printf("---\n"); + print_names_ages(count, names, ages, "%s has %d years alive.\n"); + print_names_ages(count, names, ages, "%s is %d years old.\n"); + print_names_ages(count, names, ages, "%s is %d years old again.\n"); + print_names_ages(count, names, ages, "%s lived %d years so far.\n"); + int i; char **arg = argv; for(i = 0; i < argc; i++) { printf("argument %d is '%s' (address = %p)\n", i, *arg, arg);