Rechercher : dans
Par :

[ Programmation C ]Readline

Dernière réponse le 22 mai 2009 à 13:41:36 x-timas, le 22 mai 2009 à 12:31:18 
 Signaler ce message aux modérateurs

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

Configuration: Ubunto
Firefox 3.0.10

Meilleures réponses pour « [ Programmation C ]Readline » dans :
La compilation et les modules en C et en C++ VoirCet article a pour vocation d'introduire les notions de bases de la compilation en C et en C++ et de la programmation modulaire. Il permet de mieux comprendre les messages d'erreur du compilateur. Les notions abordées ici sont indépendantes du...
Langage C - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans...
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...

1

fiddy, le 22 mai 2009 à 13:06:41

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
Google is your friend

Répondre à fiddy

2

x-timas, le 22 mai 2009 à 13:19:10

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?

Répondre à x-timas

3

fiddy, le 22 mai 2009 à 13:25:09

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.
Google is your friend

Répondre à fiddy

4

 x-timas, le 22 mai 2009 à 13:41:36

C'est exactement ce que je voulais savoir. Je vais tester sur mon programme et voir ce que ça donne.

Merci bq

Répondre à x-timas