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 :

recuperation de données


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut recuperation de données
    Bonjour à vous programmeurs en C :

    Voila je vous explique mon probleme :
    j'ai un fichier "toto.txt"
    qui contient
    un
    deux
    trois
    quatre
    cinq
    et je dois à l'aide d'un char buff[2*BUFSIZ] (sachant que j'ai definie #define BUFSIZE 5)

    j'ai donc reussi à lire dans le fichier les 10 premiers octets ainsi que tout les autres cela veut dire que quelques soit les données ecrites dans le fichier j'arrive à les lires à l'ecran

    maintenant j'aurais besoin de votre aide pour savoir comment faire pour recuper un chiffre par exemple(chiffre ecrit dans le fichier) et le comparer par rapport à une valeur maximale

    mon futur fichier se presentera sous cette forme la
    12 155
    15 16
    18 16
    156 156
    je devrais donc lire ces valeurs les affichés (mais ca cest en plus et j'arrive à le faire) mais j'aimerai m'arrete a la premiere valeurs la lire l'afficher la comparer puis passé à la deuxieme etc...

    comment faire si je veux comparer la valeur , comment la recuperer dans une valeur sachant que j'affiche octet par octer?

    a moins qu'il ya une solution pour afficher les mots jusqua l'espace ou le caractere \n
    merci de vos aides precieuses
    voici le code
    appli.h
    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
    #include <stdio.h> 
     
    #undef BUFSIZ
     
    #define BUFSIZ 5
     
    #include <conio.h> //pour getch()
     
    #include <stdlib.h> //exit(0)(fonction terminator)
     
    #include <io.h> //pour la fonction open
     
    #include <fcntl.h> //pour les attributs O_CREAT,O_BINARY....
     
    #include <sys/stat.h> //pour les attributs S_IREAD,S_IWRITE.....
     
    #include <errno.h> // pour les attributs EACCESS....
     
    #include <string.h> //pour strlen
     
    #include "C_File.h" //fichier de la classe C_File
     
    //Prototype Terminator
    void Fin (char* pMsg);
    Fichier C_File.h (//header de la classe C_File)
    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
     
     
     
    class C_File
    {
    	private :
    		char buff[2*BUFSIZ];
    		int iFichier,iBitsEcriture,iBitsLecture;
     
    	public :
     
    		 C_File();
    		 int FILE_READ(void);
    		 void FILE_TRAITE(int);
    		 ~C_File();
    };/*
    FILE_NEW // Ouverture du fichier
    FILE_DEL // Fermeture du fichier
    FILE_READ // Lecture d'un bloc
    FILE_TRAITE // Traitement de ce qui est dans le tampon*/
    Fichier Fin.h (//ma fonction termniator ,si il ya une erreur on quitte le programme)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "appli.h"
     
    void Fin (char *pMsg)
     
    {
    	puts(pMsg);
    	exit(0);
    }
    Le fichier C_File.cpp (la classe C_File)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://www.developpez.net/forums/forumdisplay.php?f=7
    }
    Et le main.cpp
    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
     
    #include "appli.h"
     
     
     
    void main (void)
    {
     
     
    	int iNbrOctets;
    	//creation d'une variable de type C_File
    	C_File objet;
     
     
    	iNbrOctets = objet.File_read();
    	if(iNbrOctets ==-1) Fin("Ecriture : Erreur");
     
     
     
     
     
    }
     
     
     
     
     
    }
    merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    personne n"a de petite idée ou mon post est trop grand!!!

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    Salut,
    la faq gere deja ce genre de sujets:
    http://c.developpez.com/faq/cpp/?fil...NNNONNN#sect22
    je te conseil les paragraphes 12 et 13 sur la gestion des strings et la gestions des flux


    sinon pour lire dans un fichier on te conseillera plutot la classe
    fstream ou istream avec une lecture en utilisant le getline(stream,string)
    puis tu convertis la string en int cf la faq

    bonne chance a toi

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    le probleme est que je ne peux utiliser les fonctions avec f exemple fopen, fgets....

    donc je cherche une solution pour pouvoir recuperer les informations disons que il faudrait que je mettes dans une variable les informations jusqu'a l'espace mais comment faire pour definir l'espace

    je fais

    do
    {
    }while(buff[iCpt]!=' ');

    ??? merci de vos reponses

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    tu as également une fonction C

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #include <stdio.h>
    ssize_t getline(char **lineptr, size_t *n, FILE *stream);

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    mais comment tu l'utilises je comprend pas trop

    merci de ton aide

    cordialement

    de plus je ne vois pas du tout comment l'integrer dans mon code je sais je suis un peux bete mais j'ai vraiment aucune idée la je galére depuis pas mal de temps , j'arrive à lire dans le fichier à afficher tout le fichier à l"ecran avec un buffer de taille max de 10 octets j'ai reussi à faire un buffer tournant mais apres jaimeraui recuperer le premier nombre sachant que chaque nombre et separé par un espace (l'espacec'est quoi comme code sachant que retour à la ligne c'est \n ...)

    merci d'avance

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    salut, la representation d'un carac se fait avec des simples cotes
    donc tu peux comparer un char de cette maniere :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    char c;
    ....
    if(c==' ')...
    sinon penses a utiliser les moteurs de recherches, voici un exemple du getline
    http://www.die.net/doc/linux/man/man3/getline.3.html


    enfin on est sur un forum C++ et non C donc on va plutot preferer ce genre de code ( plutot que d 'utiliser les fopen fread ...)

    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
     
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
     ifstream inputfile("toto.txt");
     string line;
     
     while(getline(inputfile,line))
     {
     
       // traitement cf string to int de la FAQ
       cout << line<< endl;
     }
     
     
    return 0;
    }

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    oui mais le probleme c'est qu'un moderateur a mis mon topic dans le c++ alors que je veux utiliser des fonctions de c bref c'est compliqué pour moi car mon prof. est du genre rigide..

    merci de vos reponses

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    j'ai encore une question

    voila je mais des informations dans un tableau , ce tableau contient les informations d'un fichier (le tableau ne peut depasser 10 octets donc je dois sans cesses effacer etc..)

    j'aimerais donc les informations dans une variable dés que mon programme detecte dans mon tableau un espace ou un \n il met les informations dans un char ou un int mais je n'ai vraiment aucune idée pour faire cela si quelqu"une en a une merci d'avance

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 125
    Par défaut
    ton prof veut que tu utilises une fonction comme fgetc alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(fgetc(file)==EOF) --> fin de fichier
    if(fgetc(file)==' ') --> fin du mot
    if(fgetc(file)=='\n') --> fin de ligne et fin de mot
    sinon stocker dans ton tableau le carac lu.
    on peut pas trop t aider tu dois plus ou moins utiliser ces conditions et verifier a ne pas depasser les 10 carac quand tu stock les infos dans ton tableau

    sinon la fonction pour passer de l'ascii a un int , c'est atoi()

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    merci de tes reponses mais je vais t'expliquer ce que veux mon prof

    il veut que j'utilise de sfonction bassse par exemple je ne peux pas utiliser

    fopen mais open qui retourne un int egale au nombre de bits du fichier
    ensuite pour lire dans le fichier je ne peux utiliser fread mais read

    dans le cas de fgets je dois suremment utiliser gets ou une fonction dans ce genre mais je ne sais vraiment pas comment faire

    merci de votre aide ca va vraiment m'aidé car tout ceci est pour mon projetr de BTS et la je sui sobliger de bosser dessus pendant les vacances car je suis en retard à vcauses de ces manis

    merci d'avance..

  12. #12
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,
    Citation Envoyé par Delgador
    merci de tes reponses mais je vais t'expliquer ce que veux mon prof

    il veut que j'utilise de sfonction bassse par exemple je ne peux pas utiliser

    fopen mais open qui retourne un int egale au nombre de bits du fichier
    ensuite pour lire dans le fichier je ne peux utiliser fread mais read

    dans le cas de fgets je dois suremment utiliser gets ou une fonction dans ce genre mais je ne sais vraiment pas comment faire

    merci de votre aide ca va vraiment m'aidé car tout ceci est pour mon projetr de BTS et la je sui sobliger de bosser dessus pendant les vacances car je suis en retard à vcauses de ces manis

    merci d'avance..
    Mais, dans ce cas, il serait peut etre intéressant de t'orienter plutot vers le forum C... D'autant plus que la seule chose réellement en rapport avec le C++ soit ta classe C_File

    Je ne comprendrai personnellement jamais ces professeurs qui obligent les élèves à réinventer la roue en travaillant en "C style" là ou le C++ fournit tout ce qui peut faciliter la tache, tout en fournissant quelque chose de bien plus robuste

    NOTA:
    • conio.h n'est pas portable (disponible uniquement sous windows)
    • Les autres fichiers d'entetes "langage" que tu inclue sont tous des fichiers typiquement C
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 30
    Par défaut
    merci de ta reponse mais (je sis casse pieds désolé) mais auriez vous alors une idée pour mon probleme meme si ce topic releve du C

    dans le cas ou j'utilise une classe le moyen serait de créer des fonctions ,File_Create,File_dell,File_Read et File_Traite?

    merci de vos aides

  14. #14
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Citation Envoyé par Delgador
    (snip-
    dans le cas ou j'utilise une classe le moyen serait de créer des fonctions ,File_Create,File_dell,File_Read et File_Traite?

    merci de vos aides
    Par exemple... idéalement, en tant que fonction membre de la classe, d'ailleurs
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. [vbexcel]recuperation de données
    Par Mugette dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/10/2005, 13h01
  2. Mysql LongBlob: recuperer les données
    Par froz dans le forum SGBD
    Réponses: 1
    Dernier message: 24/08/2005, 14h41
  3. PB de recuperation de données en asynchrone !!
    Par Stopher dans le forum C++
    Réponses: 8
    Dernier message: 01/02/2005, 23h20
  4. Recuperer des données d'access
    Par Lucier dans le forum MFC
    Réponses: 18
    Dernier message: 25/11/2004, 10h29
  5. Réponses: 3
    Dernier message: 22/02/2004, 20h09

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