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
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <time.h>
#include <sys/types.h>
#include <regex.h>
#define ENTREE "dentree.txt"
#define SORTIE "dsortie.txt"
extern int errno;
void fin()
{
time_t *heure;
heure=malloc(sizeof(int));
time(heure);
if (errno) fprintf(stderr, "\a\a\a::: erreur:%d ::: fin du programme RLE le %s", errno, ctime(heure));
}
int main()
{
int k,j=0,m=0;
long i=0;
char *c,*tab1,*tab2;
int retour;
regex_t preg; // expression régulière
FILE *fichier, *sortie;
//on gère les erreurs d'abbord
if (atexit((void*)fin)==-1) exit(3);
fichier=fopen(ENTREE,"rb");
if (fichier==NULL) exit (1);
sortie = fopen(SORTIE,"wb");
if (sortie==NULL) exit(2);
//fin erreurs possibles
while (fgetc(fichier)!=EOF)i++; //taille de la chaine de caractère à convertir
fseek(fichier,0,SEEK_SET); // on remet le curseur en début de fichier
tab1 = calloc (i ,sizeof(char)); //alloue mémoire pour enregistrer la chaine de caractère dans la variable
for (j=0;j<i;tab1[j]=fgetc(fichier),j++);
fclose (fichier);
regcomp(&preg,(const char*)"[0*9]+",REG_EXTENDED| REG_NOSUB);
retour=regexec(&preg,"3456",0,0,0);
regfree (&preg);
printf("%d", retour);
free(c);free(tab1);fclose(sortie);
exit (0);
} |
Partager