#include <stdio.h>
#include <stdlib.h>
typedef struct Flight Flight;
typedef struct Flights Flights;
struct Flight {
char airline[4];
int number;
char dest[4];
};
struct Flights {
Flight *flight;
int count;
};
void add_flight(Flights *fl,
const char *airline, int number, const char *dest)
{
int n = fl->count++; // n is old count; fl->count is new count
(fl->count + 1) * sizeof(*fl->flight));
snprintf(fl
->flight
[n
].
airline, 4, "%s", airline
); snprintf(fl
->flight
[n
].
dest, 4, "%s", dest
); fl->flight[n].number = number;
}
void print_flights(const Flights *fl)
{
for (int i = 0; i < fl->count; i++) {
printf("%4d. %s%d to %s\n", i
+ 1, fl->flight[i].airline,
fl->flight[i].number,
fl->flight[i].dest);
}
}
int main(void)
{
Flights fl = {NULL, 0};
add_flight(&fl, "AF", 5512, "CDG");
add_flight(&fl, "AA", 1100, "ATL");
add_flight(&fl, "LH", 6537, "FRA");
add_flight(&fl, "BA", 8821, "LHR");
add_flight(&fl, "IB", 1081, "EZE");
print_flights(&fl);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IEZsaWdodCBGbGlnaHQ7CnR5cGVkZWYgc3RydWN0IEZsaWdodHMgRmxpZ2h0czsKCnN0cnVjdCBGbGlnaHQgewogICAgY2hhciBhaXJsaW5lWzRdOwogICAgaW50IG51bWJlcjsKICAgIGNoYXIgZGVzdFs0XTsKfTsKCnN0cnVjdCBGbGlnaHRzIHsKICAgIEZsaWdodCAqZmxpZ2h0OwogICAgaW50IGNvdW50Owp9OwoKdm9pZCBhZGRfZmxpZ2h0KEZsaWdodHMgKmZsLAogICAgY29uc3QgY2hhciAqYWlybGluZSwgaW50IG51bWJlciwgY29uc3QgY2hhciAqZGVzdCkKewogICAgaW50IG4gPSBmbC0+Y291bnQrKzsgICAgICAgIC8vIG4gaXMgb2xkIGNvdW50OyBmbC0+Y291bnQgaXMgbmV3IGNvdW50CgogICAgZmwtPmZsaWdodCA9IHJlYWxsb2MoZmwtPmZsaWdodCwKICAgICAgICAoZmwtPmNvdW50ICsgMSkgKiBzaXplb2YoKmZsLT5mbGlnaHQpKTsKICAgIAogICAgc25wcmludGYoZmwtPmZsaWdodFtuXS5haXJsaW5lLCA0LCAiJXMiLCBhaXJsaW5lKTsKICAgIHNucHJpbnRmKGZsLT5mbGlnaHRbbl0uZGVzdCwgNCwgIiVzIiwgZGVzdCk7CiAgICBmbC0+ZmxpZ2h0W25dLm51bWJlciA9IG51bWJlcjsKfQoKdm9pZCBwcmludF9mbGlnaHRzKGNvbnN0IEZsaWdodHMgKmZsKQp7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGZsLT5jb3VudDsgaSsrKSB7CiAgICAgICAgcHJpbnRmKCIlNGQuICVzJWQgdG8gJXNcbiIsIGkgKyAxLAogICAgICAgICAgICBmbC0+ZmxpZ2h0W2ldLmFpcmxpbmUsCiAgICAgICAgICAgIGZsLT5mbGlnaHRbaV0ubnVtYmVyLAogICAgICAgICAgICBmbC0+ZmxpZ2h0W2ldLmRlc3QpOwogICAgfQogICAgCiAgICBwdXRzKCIiKTsKfQoKaW50IG1haW4odm9pZCkKewogICAgRmxpZ2h0cyBmbCA9IHtOVUxMLCAwfTsKICAgIAogICAgYWRkX2ZsaWdodCgmZmwsICJBRiIsIDU1MTIsICJDREciKTsKICAgIGFkZF9mbGlnaHQoJmZsLCAiQUEiLCAxMTAwLCAiQVRMIik7CiAgICBhZGRfZmxpZ2h0KCZmbCwgIkxIIiwgNjUzNywgIkZSQSIpOwogICAgYWRkX2ZsaWdodCgmZmwsICJCQSIsIDg4MjEsICJMSFIiKTsKICAgIGFkZF9mbGlnaHQoJmZsLCAiSUIiLCAxMDgxLCAiRVpFIik7CiAgICAKICAgIHByaW50X2ZsaWdodHMoJmZsKTsKICAgIAogICAgZnJlZShmbC5mbGlnaHQpOwoKICAgIHJldHVybiAwOwp9CgoK