address2.c:
#include <stdlib.h>
struct address
{
char *street;
char *city;
char *province;
char *postal_code;
};
struct address *new_address()
{
struct address *temp = (struct address *) malloc(sizeof(struct address));
temp->street = NULL;
temp->city = NULL;
temp->province = NULL;
temp->postal_code = NULL;
return temp;
}
void set_string(char **str, char *value)
{
if (*str != NULL)
{
free(*str);
}
*str = (char*) malloc( sizeof(char) * (strlen(value) + 1) );
strcpy(*str, value);
}
void set_street(struct address *add, char *value)
{
set_string(&add->street, value);
}
void set_city(struct address *add, char *value)
{
set_string(&add->city, value);
}
void set_province(struct address *add, char *value)
{
set_string(&add->province, value);
}
void set_postal_code(struct address *add, char *value)
{
set_string(&add->postal_code, value);
}
int main(int argc, char **argv)
{
if (argc < 5)
{
printf("Usage: %s street city province postal_code\n", argv[0]);
exit(1);
}
struct address *my_address = new_address();
set_street(my_address, argv[1]);
set_city(my_address, argv[2]);
set_province(my_address, argv[3]);
set_postal_code(my_address, argv[4]);
printf("Address is:\n\t%s\n\t%s, %s\n\t%s\n",
my_address->street,
my_address->city,
my_address->province,
my_address->postal_code);
}
struct address
{
char *street;
char *city;
char *province;
char *postal_code;
};
struct address *new_address()
{
struct address *temp = (struct address *) malloc(sizeof(struct address));
temp->street = NULL;
temp->city = NULL;
temp->province = NULL;
temp->postal_code = NULL;
return temp;
}
void set_string(char **str, char *value)
{
if (*str != NULL)
{
free(*str);
}
*str = (char*) malloc( sizeof(char) * (strlen(value) + 1) );
strcpy(*str, value);
}
void set_street(struct address *add, char *value)
{
set_string(&add->street, value);
}
void set_city(struct address *add, char *value)
{
set_string(&add->city, value);
}
void set_province(struct address *add, char *value)
{
set_string(&add->province, value);
}
void set_postal_code(struct address *add, char *value)
{
set_string(&add->postal_code, value);
}
int main(int argc, char **argv)
{
if (argc < 5)
{
printf("Usage: %s street city province postal_code\n", argv[0]);
exit(1);
}
struct address *my_address = new_address();
set_street(my_address, argv[1]);
set_city(my_address, argv[2]);
set_province(my_address, argv[3]);
set_postal_code(my_address, argv[4]);
printf("Address is:\n\t%s\n\t%s, %s\n\t%s\n",
my_address->street,
my_address->city,
my_address->province,
my_address->postal_code);
}