5 votes

Comment trouver une ligne dans un fichier en utilisant une expression rationnelle en C ?

Comment puis-je utiliser les expressions Regex en programmation C ? par exemple, si je veux trouver une ligne dans un fichier

DAEMONS=(sysklogd network sshd !netfs !crond)

puis affichez chaque démon dans une ligne séparée comme ceci

sysklogd 
network 
sshd 
!netfs 
!crond

Voici ce que j'ai fait jusqu'à présent

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <regex.h>
#define tofind    "[a-z A-Z] $"
int main(){
 FILE *fp;
 char line[1024];
 int retval = 0;
 char address[256];
 regex_t re;

 if(regcomp(&re, tofind, REG_EXTENDED) != 0)
  return;

 fp = fopen("/etc/rc.conf","r");//this file has this line "DAEMONS=(sysklogd network sshd !netfs !crond)"
 while((fgets(line, 1024, fp)) != NULL) {
     if((retval = regexec(&re, address, 0, NULL, 0)) == 0)
      printf("%s\n", address);
 } 
}

Toute aide serait très appréciée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X