fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct Flight Flight;
  5. typedef struct Flights Flights;
  6.  
  7. struct Flight {
  8. char airline[4];
  9. int number;
  10. char dest[4];
  11. };
  12.  
  13. struct Flights {
  14. Flight *flight;
  15. int count;
  16. };
  17.  
  18. void add_flight(Flights *fl,
  19. const char *airline, int number, const char *dest)
  20. {
  21. int n = fl->count++; // n is old count; fl->count is new count
  22.  
  23. fl->flight = realloc(fl->flight,
  24. (fl->count + 1) * sizeof(*fl->flight));
  25.  
  26. snprintf(fl->flight[n].airline, 4, "%s", airline);
  27. snprintf(fl->flight[n].dest, 4, "%s", dest);
  28. fl->flight[n].number = number;
  29. }
  30.  
  31. void print_flights(const Flights *fl)
  32. {
  33. for (int i = 0; i < fl->count; i++) {
  34. printf("%4d. %s%d to %s\n", i + 1,
  35. fl->flight[i].airline,
  36. fl->flight[i].number,
  37. fl->flight[i].dest);
  38. }
  39.  
  40. puts("");
  41. }
  42.  
  43. int main(void)
  44. {
  45. Flights fl = {NULL, 0};
  46.  
  47. add_flight(&fl, "AF", 5512, "CDG");
  48. add_flight(&fl, "AA", 1100, "ATL");
  49. add_flight(&fl, "LH", 6537, "FRA");
  50. add_flight(&fl, "BA", 8821, "LHR");
  51. add_flight(&fl, "IB", 1081, "EZE");
  52.  
  53. print_flights(&fl);
  54.  
  55. free(fl.flight);
  56.  
  57. return 0;
  58. }
  59.  
  60.  
  61.  
Success #stdin #stdout 0s 4256KB
stdin
Standard input is empty
stdout
   1. AF5512 to CDG
   2. AA1100 to ATL
   3. LH6537 to FRA
   4. BA8821 to LHR
   5. IB1081 to EZE