/******************************************************************************
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C/C++.
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#define SUCCESS 0
#define BUF_SIZE 64
#define HPY_BTH_MSG "I, %s, wish you a happy birthday, %s!!!\n"
#define SPECIAL_PERSON "Tage"
#define GUESTS { "Eduardo", "Marcos", "Matheus", "Breno", "Romoff", "Rafa", "Barizon" }
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct guest Guest;
Guest* invite( char * guest_name, Guest* guest_list) ;
void wish_happy_birthday( Guest* guest_list, char * special_person) ;
void cleanup_mess( Guest* guest_list) ;
int main( void )
{
char special_person[ BUF_SIZE] = SPECIAL_PERSON;
char * guests[ ] = GUESTS;
int guest_num = sizeof ( guests) / sizeof ( guests[ 0 ] ) ;
Guest* guest_list = NULL;
for ( int i = 0 ; i < guest_num; i++ )
guest_list = invite( guests[ i] , guest_list) ;
wish_happy_birthday( guest_list, special_person) ;
cleanup_mess( guest_list) ;
return SUCCESS;
}
struct guest
{
char name[ BUF_SIZE] ;
struct guest* next;
} ;
Guest* invite( char * guest_name, Guest* guest_list)
{
Guest
* guest
= ( Guest
* ) malloc ( sizeof ( Guest
) ) ; strcpy ( guest
-> name
, guest_name
) ; guest-> next = guest_list;
return guest;
}
void wish_happy_birthday( Guest* guest_list, char * special_person)
{
while ( guest_list != NULL)
{
printf ( HPY_BTH_MSG
, guest_list
-> name
, special_person
) ; guest_list = guest_list-> next;
}
}
void cleanup_mess( Guest* guest_list)
{
Guest* temp;
while ( guest_list != NULL)
{
temp = guest_list;
guest_list = guest_list-> next;
}
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKV2VsY29tZSB0byBHREIgT25saW5lLgpHREIgb25saW5lIGlzIGFuIG9ubGluZSBjb21waWxlciBhbmQgZGVidWdnZXIgdG9vbCBmb3IgQy9DKysuCkNvZGUsIENvbXBpbGUsIFJ1biBhbmQgRGVidWcgb25saW5lIGZyb20gYW55d2hlcmUgaW4gd29ybGQuCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIFNVQ0NFU1MgICAgICAgICAwCiNkZWZpbmUgQlVGX1NJWkUgICAgICAgIDY0CiNkZWZpbmUgSFBZX0JUSF9NU0cgICAgICJJLCAlcywgd2lzaCB5b3UgYSBoYXBweSBiaXJ0aGRheSwgJXMhISFcbiIKI2RlZmluZSBTUEVDSUFMX1BFUlNPTiAgIlRhZ2UiCiNkZWZpbmUgR1VFU1RTICAgICAgICAgIHsgIkVkdWFyZG8iLCAiTWFyY29zIiwgIk1hdGhldXMiLCAiQnJlbm8iLCAiUm9tb2ZmIiwgIlJhZmEiLCAiQmFyaXpvbiIgfQoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKdHlwZWRlZiBzdHJ1Y3QgZ3Vlc3QgR3Vlc3Q7Ckd1ZXN0KiAgaW52aXRlKGNoYXIqIGd1ZXN0X25hbWUsIEd1ZXN0KiBndWVzdF9saXN0KTsKdm9pZCAgICB3aXNoX2hhcHB5X2JpcnRoZGF5KEd1ZXN0KiBndWVzdF9saXN0LCBjaGFyKiBzcGVjaWFsX3BlcnNvbik7CnZvaWQgICAgY2xlYW51cF9tZXNzKEd1ZXN0KiBndWVzdF9saXN0KTsKCmludCBtYWluKHZvaWQpCnsgICAKICAgIGNoYXIgICAgc3BlY2lhbF9wZXJzb25bQlVGX1NJWkVdID0gU1BFQ0lBTF9QRVJTT047ICAgIAogICAgY2hhciogICBndWVzdHNbXSA9IEdVRVNUUzsKICAgIGludCAgICAgZ3Vlc3RfbnVtID0gc2l6ZW9mKGd1ZXN0cykgLyBzaXplb2YoZ3Vlc3RzWzBdKTsKICAgIEd1ZXN0KiAgZ3Vlc3RfbGlzdCA9IE5VTEw7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBndWVzdF9udW07IGkrKykKICAgICAgICBndWVzdF9saXN0ID0gaW52aXRlKGd1ZXN0c1tpXSwgZ3Vlc3RfbGlzdCk7CiAgICAKICAgIHdpc2hfaGFwcHlfYmlydGhkYXkoZ3Vlc3RfbGlzdCwgc3BlY2lhbF9wZXJzb24pOwogICAgY2xlYW51cF9tZXNzKGd1ZXN0X2xpc3QpOwoKICAgIHJldHVybiBTVUNDRVNTOwp9CgpzdHJ1Y3QgZ3Vlc3QKewogICAgY2hhciBuYW1lW0JVRl9TSVpFXTsKICAgIHN0cnVjdCBndWVzdCogbmV4dDsKfTsKCkd1ZXN0KiBpbnZpdGUoY2hhciogZ3Vlc3RfbmFtZSwgR3Vlc3QqIGd1ZXN0X2xpc3QpCnsKICAgIEd1ZXN0KiBndWVzdCA9IChHdWVzdCopbWFsbG9jKHNpemVvZihHdWVzdCkpOwogICAgc3RyY3B5KGd1ZXN0LT5uYW1lLCBndWVzdF9uYW1lKTsKICAgIGd1ZXN0LT5uZXh0ID0gZ3Vlc3RfbGlzdDsKICAgIHJldHVybiBndWVzdDsgICAgCn0KCnZvaWQgd2lzaF9oYXBweV9iaXJ0aGRheShHdWVzdCogZ3Vlc3RfbGlzdCwgY2hhciogc3BlY2lhbF9wZXJzb24pCnsKICAgIHdoaWxlIChndWVzdF9saXN0ICE9IE5VTEwpCiAgICB7CiAgICAgICAgcHJpbnRmKEhQWV9CVEhfTVNHLCBndWVzdF9saXN0LT5uYW1lLCBzcGVjaWFsX3BlcnNvbik7CiAgICAgICAgZ3Vlc3RfbGlzdCA9IGd1ZXN0X2xpc3QtPm5leHQ7CiAgICB9Cn0KCnZvaWQgY2xlYW51cF9tZXNzKEd1ZXN0KiBndWVzdF9saXN0KQp7CiAgICBHdWVzdCogdGVtcDsKICAgIHdoaWxlIChndWVzdF9saXN0ICE9IE5VTEwpCiAgICB7CiAgICAgICAgdGVtcCA9IGd1ZXN0X2xpc3Q7CiAgICAgICAgZ3Vlc3RfbGlzdCA9IGd1ZXN0X2xpc3QtPm5leHQ7CiAgICAgICAgZnJlZSh0ZW1wKTsKICAgIH0KfQo=
stdout
I, Barizon, wish you a happy birthday, Tage!!!
I, Rafa, wish you a happy birthday, Tage!!!
I, Romoff, wish you a happy birthday, Tage!!!
I, Breno, wish you a happy birthday, Tage!!!
I, Matheus, wish you a happy birthday, Tage!!!
I, Marcos, wish you a happy birthday, Tage!!!
I, Eduardo, wish you a happy birthday, Tage!!!