IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

trantement de fichier txt


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut trantement de fichier txt
    Bonjour,

    je voudrais lire un fichier dans un format très precis...

    Mon fichier texte contient des données sous la forme suivante :

    test(tab)re(tab)essaie

    (tab) : tabulation...

    je voudrais savoir comment recuper test, re et essaie en connaissant leur séparateur...

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077

  3. #3
    Membre confirmé Avatar de Pe04
    Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2005
    Messages : 111
    Par défaut
    J'ai un peu de mal avec les traitements de fichier... Mon tuteur, voudrai me voir crée une application Windows me permettant de charger des valeurs d un fichier texte dans une base de donnée PostgreSQL (le format de ce fichier serait : data (tab) data2 (tab)) ainsi de suite... Mais je ne connait pas le format exacte, je sais juste que les lignes sont séparé par des retour chariot et les champs par des tabulation... maintenant, je ne connait pas le nombre d'informations par ligne...

    J'ai commencé par faire mon petit code :

    J'ai créé une classe FileTab... je crée l'objet, j'ouvre le fichier desirée... et la je demande a l objet de traiter le fichier fourni... Le but de cette methode est lire le fichier (une lecture 512octet) et de traiter ces charactère lut... pour cela j'ai 4 pointeurs
    buf : pointeur de l espace de stockage temporaire de la ligne lut.
    pwr : pointeur d'ecriture
    prd : pointeur de lecture
    et tmp: celui ci me sert pour lire caractère par caractère...
    Grace a tmp je chercher le caractère '\n' (si je le trouve alors j ai recuper toute les info, je stock la ligne) ou '\t'(donnée recuper) sinon ajout d'un caractère à un string temporaire...

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    do{
            nbch=fread(pwr,sizeof(char),BUF_SIZE,hFile);
            pwr+=nbch;
            PutsConio("lecture");
            while(tmp<pwr){
                switch((char)*tmp){
                    case '\t':
                        prd=++tmp;
                        sql+=val;
                        sql+=", ";
                        val="";
                    break;
                    case '\n':
                        PutsConio("entrer");
                        prd=++tmp;
                        sql+=val;
                        sql+=");";
                        /* Afichage de SQL ou exécution de la requète */
                        /* A FAIRE */
                        sql="insert into ... values(";
                        val="";
                    break;
                    default:
                        val+=(char)(*tmp);
                        tmp++;
                }
            }
            char* btmp;
            int i;
            i=pwr-prd;
            if(i>0){
                btmp=(char*)malloc(BUF_SIZE);
                if(btmp==NULL) Fin("FileTab : btmp null memoire non allouer");
                memcpy(btmp,prd,i);
                memcpy(buf,btmp,BUF_SIZE);
                free(btmp);
                prd=buf;
                pwr=prd+i;
            }
            else prd=pwr=tmp=buf;
        }while(nbch>=BUF_SIZE);
    Je ne comprend pas pourquoi, parfois mon application s'arrète d elle meme ou alors pourquoi parfois ca ne lit qu'une ligne ?

    Suis je sur le bon chemin, ou alors devrais faire d'une autre manière ou avec un autre langages ??

Discussions similaires

  1. [SQLServer]Script import fichier .txt
    Par Jenbi dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/08/2006, 16h49
  2. remplir des tables a partir de fichiers TXT
    Par jeremie dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/03/2004, 14h50
  3. ouverture de fichier txt
    Par juguul dans le forum MFC
    Réponses: 11
    Dernier message: 18/12/2003, 09h44
  4. [langage] prob lecture fichier .txt
    Par martijan dans le forum Langage
    Réponses: 3
    Dernier message: 16/07/2003, 11h08
  5. communication fichier binaire fichier txt
    Par micdie dans le forum C
    Réponses: 3
    Dernier message: 05/12/2002, 00h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo