[ Programmation C ]Readline

Fermé
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 - 22 mai 2009 à 12:31
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 - 22 mai 2009 à 13:41
Bonjour,

je sais que la commande readline permet de lire une ligne de commande entrée par le clavier et de la stocjer dans une chaine de caractères.
Seulement je veux utliiser cette commande pour lire les données depuis un fichier car je travaille sur une simulation de réseau que je dois configurer ç chaque fois à la main...Au lieu de faire ça j'aimerais écrire mes commandes dans un fichier et les lire automatiqueùent pour configurer le réseau rapidement.
J'ai écrit un bout de code mais ça ne marche pas trop....

Quelqu'un pourra m'aider peut être? et si besoin je peux fournir ce que j'ai écrit

Merci

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2009 à 13:06
Salut,
Tu as la fonction fgets(FILE*).
fgets(stdin); pour lire une entrée clavier (attention à la valeur max).
fgets(fp); avec fp=fopen("fichier","r"); pour lire une ligne de fichier (attention à la valeur max).
Cdlt
0
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 1
22 mai 2009 à 13:19
en fait le fichier de config sera sous cette forme:
ifconfig udp0 create vlan 1000
ifconfig udp6 create vlan 2000
ifconfig udp120 create vlan 1050
ifconfig udp0 175.120.6.100 netmask 255.255.240.0
...

Si j'ai bien compris je place ma fonction fgets dans la condition du while avec le numero de descripteur du ficher en question et elle me lira ligne par ligne avec le max 10000 par exemple. Mais avec les \n dans le fichier elle va me renvoyer à chaque fois une seule ligne stocké dans une buffer c'est ça?

Si c'est ça mon problème est réolu, car j'ai besoin de récuperer les données ligne par ligne et non pas à une taille bien précise

Alors?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2009 à 13:25
En fait
Tu peux faire :
char buffer[500]; //ici précise une taille supérieure à la longueur maximum des lignes.
while(fgets(buffer,sizeof buffer,fp)) {
   //si la ligne a été lu entièrement (et si ce n'est pas la dernière), 
   //alors tu as le '\n' de stocker dans buffer
   char *p=strchr(buffer,'\n');
   if(p==NULL) {
       puts("ligne non lue entièrement");
   }
   else {
        //on enlève le '\n';
       *p='\0';
       //tu peux faire ici ton traitement de ligne
       //etc.
   }
}

J'espère que ce code t'aidera à y voir plus clair.
0
x-timas Messages postés 124 Date d'inscription vendredi 7 mars 2008 Statut Membre Dernière intervention 17 décembre 2010 1
22 mai 2009 à 13:41
C'est exactement ce que je voulais savoir. Je vais tester sur mon programme et voir ce que ça donne.

Merci bq
0