1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct data
{
char *s;
int ligne;
};
typedef struct data DATA;
struct liste
{
DATA d;
struct liste *next;
struct liste *prev;
};
typedef struct liste LISTE;
void charger_liste(LISTE **first,FILE *f);
int open_files(FILE **f);
void view_liste(LISTE *first);
void print_data(DATA d);
void view_ligne(LISTE* first);
LISTE* get_last(LISTE *first);
void main()
{
FILE *f;
int option;
LISTE *first;
if(!open_files(&f))
exit(0);
while (option=get_option()!=0)
{
switch(option)
{
case 1:
charger_liste (first,f);
break;
case 2:
view_liste(first);
break;
case 3:
view_ligne(first);
break;
}
}
fclose(f);
}
int get_option()
{
int p;
printf("1* charger votre liste\n2* afficher le contenu de la liste\n3* afficher le contenu de la ligne n1 et n2 \n");
printf("4* effacer la ligne de numero donne\n5* effacer les lignes vides\n6* effacer un bloc de n lignes \n");
printf("7* afficher les lignes indiques \n8* inserer une nouvelle ligne\n9* remplacer les sous chaines par des autres\n");
printf ("10* sauvegarder la liste \n");
scanf("%d",p);
return(p);
}
int open_files(FILE **f)
{
*f=fopen("programmation.txt","a+");
if(*f==NULL)
{
printf("Erreur D'ouverture Fichier programmation.txt");
return(0);
}
}
void charger_liste(LISTE **first,FILE *f)
{
LISTE *last,*p;
int l=0;char s[100];
while (fgets(s,100,f))
{
last=get_last(*first);
p= (LISTE *)malloc(sizeof(LISTE));
p->prev=last;
(p->d).ligne=l++;
p->next=NULL;
(p->d).s= (char*)malloc ((strlen(s)+1)*sizeof(char));
strcpy((p->d).s,s);
if (last==NULL)
*first=p;
last->next=p;
}
}
LISTE* get_last(LISTE *first)
{
if (first == NULL)
return NULL;
while(first->next != NULL)
{
first = first->next;
}
return first;
}
void view_liste (LISTE *first)
{
for (;first;first=first->next)
printf("%d",(first->d).ligne);
printf(" \n %s",(first->d).s);
}
void view_ligne(LISTE *first)
{
int l1,l2;
printf("donner les lignes a visualiser");
scanf("%d %d",&l1,&l2);
while (((first->d).ligne==l1)&&((first->d).ligne==l2))
{
printf("%s",(first->d).s);
}
} |
Partager