#include <stdio.h>
#include <stdlib.h>
#include <string.h>

FILE *data;
struct node* L = NULL;
struct nodeMail* M = NULL;
struct nodeNr* N = NULL;

struct nodeMail {
    char email[20];
    nodeMail* next;
};
struct nodeNr {
    char numri[10];
    nodeNr* next;
};
struct node {
    char emri[10], mbiemri[10];
    nodeMail* email=NULL;
    nodeNr* numri=NULL;
    int r, plq;
    node* next;
};
int    meVogel            (struct node* a, struct node* b) {
    if (strcmp(a->emri, b->emri)<0) // >0 => a<b
    {
        //|| (strcmp(a->emri, b->emri)==0 && strcmp(a->mbiemri, b->mbiemri)>0)
        printf("%s < %s\n", a->emri, b->emri);
    }   return 1;
    printf("%s > %s\n", a->emri, b->emri);
    return 0;
}
void   printMail          (struct nodeMail* p) {
    if (p == NULL)
        return;
    printf("%s\n", p->email);
    printMail(p->next);
}
void   printNr            (struct nodeNr* p) {
    if (p == NULL)
        return;
    printf("%s\n", p->numri);
    printNr (p->next);
}
void   printoData         (struct node* p) {
    if (p == NULL)
        return;
    printf("%d - %s %s\n", p->r, p->emri, p->mbiemri);
    printf("\ne-Mail:\n-------\n");
    printMail(p->email);
    printf("\nTelefon:\n--------\n");
    printNr(p->numri);
    printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printoData (p->next);
}
void   printoPlq          (struct node* p, int i) {
    if (p == NULL || i==10)
        return;
    printf("%d - %s %s\n", p->r, p->emri, p->mbiemri);
    printf("Kerkime: %d", p->plq);
/*  printf("\ne-Mail:\n-------\n");
    printMail(p->email);
    printf("\nTelefon:\n--------\n");
    printNr(p->numri); */
    printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
    printoPlq (p->next, i+1);
}
struct node*     shto     (node* head, char emri[], char mbiemri[], nodeMail* email, nodeNr* numri, int i) {
    node *temp = (struct node*) malloc (sizeof (struct node));
    strcpy(temp->emri, emri);
    strcpy(temp->mbiemri, mbiemri);
    temp->email = email;
    temp->numri = numri;
    temp->r = i;
    temp->plq = 0;
    temp->next = NULL;
    if (head == NULL)
        head = temp;
    else {
        node* temp1 = head;
        while (temp1->next != NULL)
            temp1 = temp1->next;
        temp1->next = temp;
    }
    return head;
}
struct nodeMail* shtoMail (nodeMail* head, char email[]) {
    nodeMail *temp = (struct nodeMail*) malloc (sizeof (struct nodeMail));
    strcpy(temp->email, email);
    temp->next = NULL;
    if (head == NULL)
        head = temp;
    else
    {
        nodeMail* temp1 = head;
        while (temp1->next != NULL)
            temp1 = temp1->next;
        temp1->next = temp;
    }
    return head;
}
struct nodeNr*   shtoNr   (nodeNr* head, char numri[]) {
    nodeNr *temp = (struct nodeNr*) malloc (sizeof (struct nodeNr));
    strcpy(temp->numri, numri);
    temp->next = NULL;
    if (head == NULL)
        head = temp;
    else
    {
        nodeNr* temp1 = head;
        while (temp1->next != NULL)
            temp1 = temp1->next;
        temp1->next = temp;
    }
    return head;
}
void   lexoData           () {
    char emri[10], mbiemri[10], email[20], numri[10];
    int i=1;

    if ((data=fopen("data.txt", "r"))==NULL) {
        data=fopen("data.txt", "w");
        fclose(data);
        data=fopen("data.txt", "w");
    }
    while (!feof(data)) {
        fscanf(data, "%s %s", emri, mbiemri);

        fscanf(data, "%s", email);
        while (strcmp(email, ";")!=0) {
            M = shtoMail(M, email);
            fscanf(data, "%s", email);              
        } 

        fscanf(data, "%s", numri);
        while (strcmp(numri, "<")!=0) {
            N = shtoNr(N, numri);
            fscanf(data, "%s", numri);
        }

        L = shto(L, emri, mbiemri, M, N, i++);
        M=NULL; N=NULL;
    }
    fclose(data);
}
void   ruajData           (node* head) {
    data=fopen("data.txt", "w");
    nodeMail* h1; nodeNr* h2;
    while (head!=NULL) {
        fprintf(data, "%s %s ", head->emri, head->mbiemri);
        h1 = head->email;
        while (h1!=NULL) {
            fprintf(data, "%s ", h1->email);
            h1=h1->next;
        }
        fprintf(data, "; ");
        h2 = head->numri;
        while (h2!=NULL) {
            fprintf(data, "%s ", h2->numri);
            h2=h2->next;
        }
        fprintf(data, "<");
        head = head->next;
        if (head!=NULL)
            fprintf(data, "\n");
    }
    fclose(data);
}
void   kerko              (node* head, char x[]) {
    int i=1;
    while (head!=NULL) {
        if (strstr(head->emri, x)!=NULL || strstr(head->mbiemri, x)!=NULL) {
            head->plq++;
            printf("%d - %s %s\n", i++, head->emri, head->mbiemri);
            printf("\ne-Mail:\n-------\n");
            printMail(head->email);
            printf("\nTelefon:\n--------\n");
            printNr(head->numri);
            printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
        }
        head = head->next;
    }
}
void   edito              (node* head, int x) {
    int i=1;
    char c[20];
    while (i<x) {
        head = head->next;
        i++;
    }
    printf("%s %s\n", head->emri, head->mbiemri);
    printMail (head->email);
    printNr (head->numri);
    printf("\nEmri i ri: ");
    scanf("%s", head->emri);
    printf("Mbiemri i ri: ");
    scanf("%s", head->mbiemri);
/*  printf("Email: ");
    scanf("%s", c);
    while (strcmp(c, ";")!=0) {
        shtoMail(head->email, c);
        printf("Email: ");
        scanf("%s", c); 
    }
    printf("Numri: ");
    scanf("%s", c);
    while (strcmp(c, ";")!=0) {
        shtoNr (head->numri, c);
        printf("Numri: ");
        scanf("%s", c); 
    } */
}
struct node*     fshi     (node* head, int x[]) {
    int i=1;
    node* p = head;
    node* q = head->next;
    while (x[i]!='\0') {
        while (q!=NULL) {
            if (q->r == x[i]) {
                p->next = q->next;
                free(q);
                q = p->next;
                break;
                }
            p = q;
            q = q->next;            
        }
        i++;
    }
    if (head->r == x[0]){
        p = head->next;
        free(head);
        return p;
    }
    return head;
}
void   renditPlq          (node* p) {
    node* q;
    node* min;
    node *head = (struct node*) malloc (sizeof (struct node));
    head->next = L;
    p = head;

    while (p->next->next!=NULL)
    {
        min = p;
        q = p->next;
        while (q->next!=NULL)
        {
            if (min->next->plq < q->next->plq)
                min = q;
            q = q->next;
        }
        node* a = p->next;
        p->next = min->next;
        min->next = a;
        node* b = a->next;
        a->next = p->next->next;
        p->next->next = b;
        p = p->next;
    }
    L = head->next;
}
void   rendit             (node* p) {
    node* q;
    node* min;
    node *head = (struct node*) malloc (sizeof (struct node));
    head->next = L;
    p = head;

    while (p->next->next!=NULL)
    {
        min = p;
        q = p->next;
        while (q->next!=NULL)
        {
            if (strcmp(min->next->emri, q->next->emri)==1|| (strcmp(min->next->emri, q->next->emri)==0 && strcmp(min->next->mbiemri, q->next->mbiemri)==1))
                min = q;
            q = q->next;
        }
        node* a = p->next;
        p->next = min->next;
        min->next = a;
        node* b = a->next;
        a->next = p->next->next;
        p->next->next = b;
        p = p->next;
    }
    L = head->next;
}
int main() {
    char search[20];
    char a[10], b[10];
    int ndr, vfshi[10], i=0, e, plq[10];
    node* p = L;

    lexoData();
    rendit(L);
    printf("* * * LIBRI I KONTAKTEVE * * *\n\n");
    do {
    printf("1 - Shiko kontaktet\n");
    printf("2 - Kerko kontakt\n");
    printf("3 - Shto kontakt\n");
    printf("4 - Modifiko kontaktet\n");
    printf("5 - Fshi kontakte\n");
    printf("6 - Te preferuarit\n");
    printf("7 - Dil\n");
    printf("Ekzekuto: ");
    scanf("%d", &e);
    printf("\n\n");

        if (e == 1) { // sh
            printoData(L);
        }
else    if (e == 2) { // ke
        printf("Kerko: ");
        scanf("%s", search);
        printf("\n\n");
        kerko (L, search);
    }
else    if (e == 3) { // s
    while (p->next != NULL)
        p = p->next;
    node *temp = (struct node*) malloc (sizeof (struct node));
    printf("Emri: ");
    scanf("%s", temp->emri);
    printf("Mbiemri: ");
    scanf("%s", temp->mbiemri);
    printf("Email: ");
    do {
        scanf("%s", search);
        if (strcmp(search, ";")!=0)
            shtoMail(temp->email, search);
    } while ((search, ";")!=0);
    printf("Numri: ");
    do {
        scanf("%s", search);
        if (strcmp(search, ";")!=0)
            shtoNr (temp->numri, search);
    } while (strcmp(search, ";")!=0);
    temp->next = NULL;
    p->next = temp;
}
else    if (e == 4) { // modif
    printf("Ndrysho: ");
    scanf("%d", &ndr);
    edito(L, ndr);
    rendit(L);
}
else    if (e == 5) { // f
    printf("Fshi: ");
    do {
        scanf("%d", &vfshi[i]);
    } while (vfshi[i++]!=0);
    vfshi[i]='\0';
    L = fshi(L, vfshi);
}
else    if (e == 6) { // te preferu
    renditPlq(L);
    printoPlq(L, 0);
    rendit(L);
}
else                { //
    ruajData(L);
    break;
}
} while (e>0 && e<8);
    return 0;
}
Re: BOOK CONTACTS IN C 80 80

I HAVE SEEN IN DANIWEB FOR THE BOOK OF CONTACS BUT THESE ARE OTHER REQUIREMENTS..ARE MORE COMPLEX

Re: BOOK CONTACTS IN C 80 80

1) No need for all caps. 2) What is your question?

Re: BOOK CONTACTS IN C 80 80

Open the TXT file and you have the question there.Hey buddy there is an error in your code.

Re: BOOK CONTACTS IN C 80 80

Hey Dani, nice work but there are some problems in executing at the row 10

Re: BOOK CONTACTS IN C 80 80

please help me fix that

Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.19 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.