Extraire des mots dans un fichier en c

Fermé
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011 - Modifié par elwess20 le 12/01/2011 à 13:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 15 janv. 2011 à 11:09
Bonjour mes amis,
je veut faire un programme qui me permet de extraire tous les mot qui sont situé après le mot "alors",mais je ne sais pas les fonction qui me permet de faire cette extraction
un exemple de fichier texte

si noir et blanc alors gris  
si rouge et noir alors rouge foncée  

dans cette exemple je veut extraire les 2 mots gris et rouge foncée,svp aider a résoudre ce problème
merci
A voir également:

4 réponses

scaravenger Messages postés 2685 Date d'inscription mercredi 28 mai 2008 Statut Membre Dernière intervention 30 janvier 2015 617
12 janv. 2011 à 13:26
strcpy(str, "si noir et blanc alors gris ");
ptr= strstr(str,"alors");// ptr pointe sur le "a" de "alors"
ptr= strstr(str," ");// ptr pointe sur l'espace après "alors"
ptr++;

ptr pointera sur ta couleur.
1
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
12 janv. 2011 à 13:35
merci pour votre réponse,mais ce que je veut,c'est de parcourir le fichier jusqu'à arrivé au mot alors,et extrait le mot qui le reste de ligne.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
12 janv. 2011 à 14:17
ba là, 90% du travail est fait.
il te reste à mettre ton fichier dans une chaine de caractère et à récupérer le reste que tu veux (facile, tu as le pointeur du début)
0
madinino Messages postés 15 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 17 janvier 2011
12 janv. 2011 à 14:40
Slt, la solution est interressante mais comment faire pour copier les caractere en partant de la ou a pointer le pointeur jusqu'à la fin de la chaine.
Est ce qu'il y a un moyen de traiter s'il y a un autre "alors"?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
12 janv. 2011 à 16:19
Est ce qu'il y a un moyen de traiter s'il y a un autre "alors"?
Il y a toujours un moyen...
Le problème c'est que la question n'est pas posée complètement. Là on récupère les les mots après alors, sans critère d'arret. Nous ne pouvons pas l'inventer pour vous.
0
madinino Messages postés 15 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 17 janvier 2011
12 janv. 2011 à 16:51
je cherche le moyen de lire de rentrer dans une base les mot qui se situent avant un point virgule,par exemple mon fichier contient :
12;Mickael Jackson;45:23
il faut que j'arrive a rentrer dans ma base les mot 12, Mickael Jackson et 45:23,
si quelqu'un sait comment on peut faire, je lui serai vraiment reconnaissant.
0
elwess20 Messages postés 26 Date d'inscription samedi 1 janvier 2011 Statut Membre Dernière intervention 15 janvier 2011
12 janv. 2011 à 18:44
en faite ,c'est une solution interressante,mais est ce qu'on peut faire avec la fonction fseek et strcpy?
si oui,comment faire?
mercii bcp mes amis pour vos reponses
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
13 janv. 2011 à 08:29
fseek : non, car elle fonctionne en position pas en contenu.
en détaillant ces fonctions http://www.linux-kheops.com/doc/man/manfr/man-html-0.9/man3/string.3.html tu trouveras peut être ce qu'il te faut.
0
madinino Messages postés 15 Date d'inscription mardi 11 janvier 2011 Statut Membre Dernière intervention 17 janvier 2011
14 janv. 2011 à 21:54
J'ai réussi a creer le parseur de fichier,voici le code:
#include<conio.h>
#include <iostream>
#include <fstream>
#include <string>
#include <limits>  // pour utiliser numeric_limits<int>::max()


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
using namespace std;
 
int main()
{
    char	*pointeur;
    char	*separateur = { ";" };     // Le séparateur
    char    *buffer;
        
        
        ifstream fichier("Playlist.csv", ios::in);
 
        if(!fichier.fail())
        {
                
 
                string ligne;
                while(getline(fichier, ligne))
                {
                        int     nb_mot=1;
                        size_t size = ligne.size() + 1;
                        char * tampon = new char[ size ];
                        // copier la chaîne
                        strncpy( tampon, ligne.c_str(), size );
                        buffer = strdup ( tampon );
                        // premier appel,
                        pointeur = strtok( buffer, separateur  );
                        printf (" Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
                        	    
                        while( pointeur != NULL ) 
                        {
                        // Cherche les autres separateur
                        pointeur = strtok( NULL, separateur  );
                        if ( pointeur != NULL )
                        {
                        nb_mot++; // increment du nombre de mot	
                        printf ("Mot de la phrase numero : %d %s\n",nb_mot, pointeur);
                        }
                        }

                       	    
                        
                }
                        
               
                fichier.close();        
        }
        else
                cerr << "Impossible d'ouvrir le fichier !" << endl;
 
        getchar();
}

Parcontre je ne sai pas comment inserer chaque mot dans une base de donnée, toute aide sera la bienvenu.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
15 janv. 2011 à 11:09
Merci de créer ton propre post.
Cela sera plus pratique pour t'aider.
Cdlt,
0