#include<stdio.h>
struct Contact{
int No;
char name [20];
char phoneNumber[30];
char Email_address[45];
};
void Emptydata(int max,FILE *f)
{
unsigned int i;
struct Contact EmptyContact = {0,"","",""};
for(i=1;i<=100;++i)
{
fwrite(&EmptyContact
, sizeof(struct Contact
),1,f
); }
}
int main(void)
{
int user;
int counter=0;
int numOfRecord=0,iterator=0;
FILE *f;
f
=fopen("Contact.dat","wb+"); Emptydata(50,f);
struct Contact c[2]={{1,"Ariel","0981-154-203","Tong@gmail.com"},{2,"Chubao","0910-653-758","Chu@gmail.com"}};
fwrite(c
,sizeof(struct Contact
),sizeof(c
)/sizeof(struct Contact
),f
);
printf("Enter the number of option you want(1 for read the existing contact, 2 for add new contact.)\n");
if(user==1)
{
f
=fopen("Contact.dat","rb");
numOfRecord
=ftell(f
)/sizeof(struct Contact
);
struct Contact c[numOfRecord];
fread(c
,sizeof(struct Contact
),numOfRecord
,f
);
for(iterator=0;iterator<numOfRecord;++iterator)
{
printf("%d%10s%20s%20s\n",c
[iterator
].
No,c
[iterator
].
name,c
[iterator
].
phoneNumber,c
[iterator
].
Email_address); }
}
if(user==2)
{
f
=fopen("Contact.dat","r+b");
struct Contact New ={0,"","",""};
printf("Enter your name,phone number,and email address.\n"); fscanf(stdin
,"%10s%20s%20s",New.
name,New.
phoneNumber,New.
Email_address);
counter++;
fseek(f
,(counter
+2)*sizeof(struct Contact
),SEEK_END
);
numOfRecord
=ftell(f
)/sizeof(struct Contact
);
fwrite(&New
,sizeof(struct Contact
),numOfRecord
-2,f
);
struct Contact c[numOfRecord];
fread(c
,sizeof(struct Contact
),numOfRecord
,f
);
for(iterator=0;iterator<numOfRecord;++iterator)
{
printf("%s%20s%20s\n",c
[iterator
].
name,c
[iterator
].
phoneNumber,c
[iterator
].
Email_address); }
}
}
I2luY2x1ZGU8c3RkaW8uaD4KCnN0cnVjdCBDb250YWN0ewoJaW50IE5vOwoJY2hhciBuYW1lIFsyMF07CgljaGFyIHBob25lTnVtYmVyWzMwXTsKCWNoYXIgRW1haWxfYWRkcmVzc1s0NV07Cn07Cgp2b2lkIEVtcHR5ZGF0YShpbnQgbWF4LEZJTEUgKmYpCnsKCXVuc2lnbmVkIGludCBpOwoJIAoJc3RydWN0IENvbnRhY3QgRW1wdHlDb250YWN0ID0gezAsIiIsIiIsIiJ9OwoJCglmb3IoaT0xO2k8PTEwMDsrK2kpCgl7CgkJZndyaXRlKCZFbXB0eUNvbnRhY3QsIHNpemVvZihzdHJ1Y3QgQ29udGFjdCksMSxmKTsKCX0KfQppbnQgbWFpbih2b2lkKQp7CglpbnQgdXNlcjsKCWludCBjb3VudGVyPTA7CglpbnQgbnVtT2ZSZWNvcmQ9MCxpdGVyYXRvcj0wOwoJRklMRSAqZjsKCQoJZj1mb3BlbigiQ29udGFjdC5kYXQiLCJ3YisiKTsKCUVtcHR5ZGF0YSg1MCxmKTsKCQoJc3RydWN0IENvbnRhY3QgY1syXT17ezEsIkFyaWVsIiwiMDk4MS0xNTQtMjAzIiwiVG9uZ0BnbWFpbC5jb20ifSx7MiwiQ2h1YmFvIiwiMDkxMC02NTMtNzU4IiwiQ2h1QGdtYWlsLmNvbSJ9fTsKCWZzZWVrKGYsMCxTRUVLX1NFVCk7Cglmd3JpdGUoYyxzaXplb2Yoc3RydWN0IENvbnRhY3QpLHNpemVvZihjKS9zaXplb2Yoc3RydWN0IENvbnRhY3QpLGYpOwoJZmNsb3NlKGYpOwoJCgoJcHJpbnRmKCJFbnRlciB0aGUgbnVtYmVyIG9mIG9wdGlvbiB5b3Ugd2FudCgxIGZvciByZWFkIHRoZSBleGlzdGluZyBjb250YWN0LCAyIGZvciBhZGQgbmV3IGNvbnRhY3QuKVxuIik7CglzY2FuZigiJWQiLCZ1c2VyKTsKCQoJaWYodXNlcj09MSkKCXsKCQlmPWZvcGVuKCJDb250YWN0LmRhdCIsInJiIik7CgkJZnNlZWsoZiwwLFNFRUtfRU5EKTsKCQkKCQludW1PZlJlY29yZD1mdGVsbChmKS9zaXplb2Yoc3RydWN0IENvbnRhY3QpOwoJCXJld2luZChmKTsKCQkKCQlzdHJ1Y3QgQ29udGFjdCBjW251bU9mUmVjb3JkXTsKCQlmcmVhZChjLHNpemVvZihzdHJ1Y3QgQ29udGFjdCksbnVtT2ZSZWNvcmQsZik7CgkJCgkJZm9yKGl0ZXJhdG9yPTA7aXRlcmF0b3I8bnVtT2ZSZWNvcmQ7KytpdGVyYXRvcikKCQl7CgkJCXByaW50ZigiJWQlMTBzJTIwcyUyMHNcbiIsY1tpdGVyYXRvcl0uTm8sY1tpdGVyYXRvcl0ubmFtZSxjW2l0ZXJhdG9yXS5waG9uZU51bWJlcixjW2l0ZXJhdG9yXS5FbWFpbF9hZGRyZXNzKTsKCQl9Cgl9CglpZih1c2VyPT0yKQoJewoJCWY9Zm9wZW4oIkNvbnRhY3QuZGF0IiwicitiIik7CgkJCgkJc3RydWN0IENvbnRhY3QgTmV3ID17MCwiIiwiIiwiIn07CgkJCgkJcHJpbnRmKCJFbnRlciB5b3VyIG5hbWUscGhvbmUgbnVtYmVyLGFuZCBlbWFpbCBhZGRyZXNzLlxuIik7CgkJZnNjYW5mKHN0ZGluLCIlMTBzJTIwcyUyMHMiLE5ldy5uYW1lLE5ldy5waG9uZU51bWJlcixOZXcuRW1haWxfYWRkcmVzcyk7CgkJCgkJY291bnRlcisrOwoJCWZzZWVrKGYsKGNvdW50ZXIrMikqc2l6ZW9mKHN0cnVjdCBDb250YWN0KSxTRUVLX0VORCk7CgkJCgkJbnVtT2ZSZWNvcmQ9ZnRlbGwoZikvc2l6ZW9mKHN0cnVjdCBDb250YWN0KTsKCQlyZXdpbmQoZik7CgkJCgkJZndyaXRlKCZOZXcsc2l6ZW9mKHN0cnVjdCBDb250YWN0KSxudW1PZlJlY29yZC0yLGYpOwoJCQkKCQlzdHJ1Y3QgQ29udGFjdCBjW251bU9mUmVjb3JkXTsKCQlmcmVhZChjLHNpemVvZihzdHJ1Y3QgQ29udGFjdCksbnVtT2ZSZWNvcmQsZik7CgkJCgkJZm9yKGl0ZXJhdG9yPTA7aXRlcmF0b3I8bnVtT2ZSZWNvcmQ7KytpdGVyYXRvcikKCQl7CgkJCXByaW50ZigiJXMlMjBzJTIwc1xuIixjW2l0ZXJhdG9yXS5uYW1lLGNbaXRlcmF0b3JdLnBob25lTnVtYmVyLGNbaXRlcmF0b3JdLkVtYWlsX2FkZHJlc3MpOwoJCX0KCX0KCWZjbG9zZShmKTsKfQ==