int view(int argc, char **argv) { if (argc < 2) return view_help(); int c; char *in = NULL, *out = NULL; int i_is_set = 0, r_is_set; int record_id = -1; while ((c = getopt (argc, argv, "hi:r:")) != -1) { switch (c) { case 'i': i_is_set = 1; in = optarg; break; case 'r': r_is_set = 1; record_id = atoi(optarg); break; case 'h': view_help(); return 1; case '?': if (optopt == 'i') fprintf (stderr, "Option -%c requires an argument.\n", optopt); else if (isprint (optopt)) fprintf (stderr, "Unknown option `-%c'.\n", optopt); else fprintf (stderr, "Unknown option character `\\x%x'.\n", optopt); return view_help(); default: return view_help(); } } char *type = argv[0]; if (i_is_set == 0) { fprintf(stderr, "Input file is not set\n"); return view_help(); } if (strcmp(type, "plt") == 0) return view_plt(in); else if (strcmp(type, "ubin") == 0) return view_ubin(in, record_id); else if (strcmp(type, "wahbm") == 0) return view_wahbm(in); return 1; }
int main(int argc,char *argv[]) { if(argc>1) { if(!strcmp(argv[1],"-h")) view_help(); } int records = 0, i; char *string; struct students *person; do { string = (char *) calloc(5, sizeof(char)); person = (struct students*) calloc(5, sizeof(struct students)); } while (!person && !string); puts("ATTENCION: maximum length of record cannot exceed 19 symbols"); while (records < 5) { input(person, records); records++; puts("enter stop to quit"); fgets(string,5,stdin); if(strcmp(string,"stop")==0) break; } if (records == 5) puts("you can enter only 5 persons"); show_students(person,records); return 0; }