begin process at 2012 05 29 23:05:11
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

lecture fichier et test des lignes...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

lecture fichier et test des lignes...

dimanche 15 octobre 2006 à 18:42:13 | lecture fichier et test des lignes...

jojomillenium

Bonjour,

J'aimerai lire un fichier qui ressemble a ca:
KJ  1 3 5;
I  OPL;
B 12 34 78, 90;
I  PPL;
et ainsi de suite des lignes qui ne sont pas du meme type:


D' habitude je lis des fichiers ou chaque ligne est pareil (genre 4 float séparé par des virgules)
Mais pas la!
Comment je peux faire pour lire ligne par ligne, tester si j'ai KJ ou I ou B ou ... au debut
pour ensuite lire si j'ai KJ les 3 int qui suivent, si I le string et si B les 4 ints ...etc ?

MErci beaucoup pour votre aide!

dimanche 15 octobre 2006 à 21:43:17 | Re : lecture fichier et test des lignes...

rrk275

Salut,
en gros:
Pour chaque ligne
    Lire le premier
    Si premier = = I
       lire string
     Si premier = = B
       lire les 4 ints
     Si premier = = KJ
        lire les 3 ints
Fin Pour
.. apres a toi de voir comment stocker ca,
un tableau pour tous les I, un pour les B un pour les KJ ... tout depend de son utilité ..
Louis
lundi 16 octobre 2006 à 00:48:22 | Re : lecture fichier et test des lignes...

Ombitious_Developper

Salut :

Remarque : il vaut mieux ne pas mettre des ";" à la fin de chaque ligne.

// cette fonction découpe une phrase en un tableau
// de chaînes de caractères 
char ** tokenize (char * txt) {
    const int MAX = 10;
    const char * DELM = " ";
    char ** tok = (char **)malloc (MAX*sizeof(char *));
    int I = 0;
    char * sep = strtok (txt, DELM);
    while(sep != NULL) {
       tok [I++] = (char *)strdup (sep);
       sep = strtok (NULL, DELM);
    }
    return tok;
}

FILE * stream;

stream = fopen ("file.dat", "r");
if (!stream)
    return;

char buffer [BUFSIZ];

while (fgets (buffer, BUFSIZ, stream) != NULL)
{
    char ** tokens = tokenize (buffer);
    if (tokens) {
       if (!strcmpi (tokens [0], "I") {
           // traitement
       }
       else if (!strcmpi (tokens [0], "B") {
         
// traitement
       }
       else if (!strcmpi (tokens [0], "KJ") {
         
// traitement
       }
       // libérer la mémoire
       free (tokens);
       tokens = NULL;
    }
}
lundi 16 octobre 2006 à 01:36:31 | Re : lecture fichier et test des lignes...

BruNews

Administrateur CodeS-SourceS
strtok doit etre definitivement abandonné.

Elle se sert d'une variable implicite, la même quel que soit le thread appelant, c'est une pure calamité issue d'un autre age. Les bugs qu'elle peut engendrer seront très difficiles à retrouver.

2 pointeurs suffisent pour le même travail mais avec un résultat assuré.

ciao...
BruNews, MVP VC++
lundi 16 octobre 2006 à 19:11:35 | Re : lecture fichier et test des lignes...

Ombitious_Developper

Salut :

Comment peut on remplacer "strtok" par deux pointeurs?
lundi 16 octobre 2006 à 20:18:53 | Re : lecture fichier et test des lignes...

jojomillenium

Réponse acceptée !
Ce que tu peux faire c'est lire les 3 premiers caractère pour tester si le premier caractère = "I" ou si les 2 premiers = "KJ" ...
   FILE *filein;
    char chaine[255];
    filein = fopen("data/World.txt", "rt");                // File To Load World Data From
    if(filein != NULL)
    {
        while (fgets(chaine, 250, filein) != NULL) // On lit le fichier tant qu'on ne reçoit pas d'erreur (NULL)
        {
             if(chaine[0] == 'B')
             {
               
sscanf(chaine, "B %d", &num1);
             }
             if(chaine[0].chaine[1]== ' KJ')
            {
                   // instruction ....
            }
        }
    }
    fclose(filein);


lundi 16 octobre 2006 à 21:53:56 | Re : lecture fichier et test des lignes...

Ombitious_Developper

Salut :

Comment peut on écrire ça :

// ????
if(chaine[0].chaine[1]== ' KJ') {
}

c'est faux.
lundi 16 octobre 2006 à 22:32:44 | Re : lecture fichier et test des lignes...

jojomillenium

C'est "abgrégé"!
Tu t arrange pour créer une fonction genre
char* Get3PremierChars(char* s)
{
    return s[0].s[1].s[2];
}

que tu utilise par la suite pour tes tests!

lundi 16 octobre 2006 à 23:59:51 | Re : lecture fichier et test des lignes...

BruNews

Administrateur CodeS-SourceS
TXT VERS LISTBOX (WIN32)
http://www.cppfrance.com/code.aspx?id=25258

Ombitious > regarde comment je détaille les lignes pour insertion dans une listbox. Le principe est le même quel que soit les séparateurs recherchés.

ciao...
BruNews, MVP VC++
mardi 17 octobre 2006 à 00:01:14 | Re : lecture fichier et test des lignes...

BruNews

Administrateur CodeS-SourceS
OUPS grave faute:
"... quels que soient...."

ciao...
BruNews, MVP VC++


Cette discussion est classée dans : fichier, ligne, lire, lignes, kj


Répondre à ce message

Sujets en rapport avec ce message

lire fichier ligne par ligne [ par mat74 ] salut a ts je voudrai savoir comment je pourrai lire un fichier lignes par lignes . par exemple une fonction qui me permerttrai de recuperer la ligne lire un ligne non defini... [ par jojomillenium ] Hello! J'ai un souci, je sais pas comment faire! Je dois lire un fichier qui est généré par un autre programme, donc je ne peux pas le modifier. Dans Ligne par ligne [ par Ziman ] Bonjour,d'habitude, j'utilise ReadFile pour lire dans un fichier, mais comment doit-je faire si je veux lire dans le fichier ligne par ligne ? Y a-t-i MFC lire un fichier texte ligne par ligne [ par mqsi ] salut a tous,vs pouvez me dire comment lire un fichier texte ligne par ligne,puis recuperer chaque ligne ds un tableau,et merci pr l'aide,je travail a Lire une ligne au hazard dans un fichier [ par sebastienmz ] Bonjour je suis confronter a un problème : j'aimerais lire une ligne au hazard dans un fichier et je sais pas trop comment faire , pourriez-vous m'aid [C] lire une ligne L dans fichier texte [ par swan94 ] Salut à tous,Je suis actuellement en galère pour trouver la solution à ce problème :    J'aurais besoin de pouvoir lire la ligne dont le numéro serait lire un fichier texte avec visual C++ [ par sarah62223 ] Bonjour,Je suis actuellement en train de developper en C++ et je voudrais savoir comment faire pour venir lire dans un fichier texte ligne par ligne , récupérer des lignes d'un fichier txt [ par the_neo_81 ] Bonjour à tous, voila donc ma question.Cela fait un bon moment que je cherche à:    -lire un fichier txt préformater (je sais que tel ligne  = tel inf Comment recup lign par lign d'un .txt ET comment obtenir le contenu d'un repertoire [ par arsenecouette ] Bonjour à tous,Dans un fichier.txt, je sauvegarde un mail. A savoir  :       -premiere ligne :  l'expediteur       -deuxième li ligne de fichier [ par cedric3456 ] salut a tous en c ou c++ peut on lire et ecrire a une ligne donnee dans un fichier texteexemple : ecrire a la ligne n une chaine et lire la ligne n


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales