#include #include #include #include int main(int argc, char *argv[]) { char *people; int i, size, written; people = NULL; size = 0; written = 0; args: if(argc==1){ fprintf(stderr, "usage: %s person ...\n", argv[0]); return 1; } else if(argc==2) people = argv[1]; else for(i = 1; isize){ size += written+strlen(argv[i])+20; people = realloc(people, size+1); if(people==NULL) err(1, "realloc"); } concat: if(i==argc-1) strcat(people, " and "); else if(i>1) strcat(people, ", "); strcat(people, argv[i]); } end: printf("Hello %s!\n", people); }