Name: Anonymous 2013-11-19 12:18
Ask /prog/ anything.
Although don't expect an answer or even a good one.
Also, keep it /prog/ related.
Although don't expect an answer or even a good one.
Also, keep it /prog/ related.
#include <stdio.h>
#include <string.h>
typedef struct _record {
char *firstname;
char *lastname;
char *mobilenum;
struct _record *Next;
} Record;
void newentry(Record *Rec);
int insert(Record *Rec, char * lname, char * fname, char * mobile);
void viewall(Record *Rec);
int main()
{
char c;
Record *Phonebook = NULL;
while(1) {
printf("%s\n", "Phonebook: ");
printf("%s\n", "\t[1] Insert");
printf("%s\n", "\t[2] Display");
printf("%s\n", "\t[3] Exit");
do {
scanf("%c", &c);
} while (!((c == '1') || (c == '2') || (c == '3')));
switch (c) {
case '1':
newentry(Phonebook);
break;
case '2':
viewall(Phonebook);
break;
case '3':
return 0;
}
}
}
void newentry(Record *Rec)
{
char lname[30], fname[30], mobile[15];
int error;
clrscr();
printf("%s", "Last Name: ");
scanf("%s", &lname);
printf("%s", "First Name: ");
scanf("%s", &fname);
printf("%s", "Mobile No.: ");
scanf("%s", &mobile);
error = insert(Rec, lname, fname, mobile);
if (error > 0) {
printf("%s\n", "Not enough memory.");
getch();
}
}
int insert(Record *Rec, char * lname, char * fname, char * mobile)
{
/*
RETURN 0 IF SUCCESSFUL.
*/
Record *New, *Temp;
int i;
New = (Record *) malloc(sizeof (Record));
/* If malloc returns an invalid pointer */
if (!New) {
return 1;
}
/* Allocate memory for strings and
copy the arguments into them.
*/
New->lastname = (char *) malloc(strlen(lname) + 1);
strcpy(New->lastname, lname);
printf("%s", New->lastname);
New->firstname = (char *) malloc(strlen(fname) + 1);
strcpy(New->firstname, fname);
New->mobilenum = (char *) malloc(strlen(mobile) + 1);
strcpy(New->lastname, mobile);
New->Next = NULL;
/* If malloc returns an invalid pointer on the strings.*/
i = !(New->lastname) || !(New->firstname) || !(New->mobilenum);
if (i) {
return 1;
}
if (Rec == NULL) {
Rec = New;
} else {
Temp = Rec;
while (Temp->Next != NULL) {
Temp = Temp->Next;
}
Temp->Next = New;
}
return 0;
}
void viewall(Record *Rec)
{
Record *Temp;
clrscr();
printf("%s\t\t", "Last Name");
printf("%s\t\t", "First Name");
printf("%s\n", "Mobile Number");
Temp = Rec;
while (Temp->Next != NULL) {
printf("%s\t\t", Temp->lastname);
printf("%s\t\t", Temp->firstname);
printf("%s\n", Temp->mobilenum);
Temp = Temp->Next;
}
}