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 :

pb de programme


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut pb de programme
    Mon code est le suivant, pouvez vous me dire pourquoi il n'est pas bon


    Fichier.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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    #pragma hdrstop
    #include <condefs.h>
    #include <iostream.h>
    #include <conio.h>
    #include "ESFichier.h"
    #include <stdio.h>
     
    //---------------------------------------------------------------------------
    #pragma argsused
     
    ESFichier *FichLire;
    ESFichier *FichEcrire;
     
    int main(int argc, char *argv[])
    {
        char Tab[255];
        int Lig;
        FichLire = new ESFichier();
        FichEcrire = new ESFichier();
     
    //****************************************************
       // Lecture d'un fichier APT
     
        // Ouverture en lecture
        FichLire->Ouvrir("programme_apt.txt","r");
        cout << "ouverture du fichier en lecture" << endl;
     
        FichLire->CompterLigne(&Lig);
        printf("Nombre de ligne : %d\n",Lig);
     
        /*//Lire une ligne n
        FichLire->LireLigne(Tab,1);
        cout << Tab << endl;
        FichLire->LireLigne(Tab,10);
        cout << Tab << endl;*/
     
        while(FichLire->Lire(Tab)!=NULL)
        {
         cout << Tab << endl;
        }
     
     
    //****************************************************
     
    //****************************************************
       // Ecriture d'un fichier ISO
     
          FichLire->ReplacerCurseur();
     
     
        // Ouverture du fichier en mode Ecriture
        FichEcrire->Ouvrir("programme_iso.txt","w");
        cout << "ouverture du fichier en ecriture" << endl;
     
         while(FichLire->Lire(Tab))      //tant ke l'on peu lire le fichier programme_apt.txt....
            {
                    FichEcrire->Ecrire(Tab);//... on ecris dans le fichier fichier programme_iso.txt
            }
    cout<<"Fichier recopier en entier"<<endl;
    }
     
     
        // Fermeture
        FichEcrire->Fermer();
        FichLire->Fermer();
     
    //****************************************************
     
        //attente d'une touche du clavier pour quitter l'application
        getch();
     
        return 0;
     
    }
    ESFichier.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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    #include "ESFichier.h"
     
     
    ESFichier::ESFichier()
    {
     
    }
     
     
    void ESFichier::Ouvrir(char *nom, char *mode)
    {
    	fichier = fopen (nom, mode);
           Nom=nom;
    }
     
     
    bool ESFichier::Lire(char *ligne)
    {
    	char *status;
     
     
    	// sort si fichier pas ouvert
    	if (fichier == NULL) return false;
     
       else {
    	// initialise et lit  la ligne
    	strcpy(ligne,"");
    	status = fgets (ligne, TAILLE_LIGNE, fichier);
     
    	// supprime l'éventuel "\n"
    	if (strlen(ligne) > 0)
    	{
    		if (ligne[strlen(ligne)-1] == '\n') ligne[strlen(ligne)-1] = '\0';
    	}
     
            return (status != NULL);
     
       }
    }
     
    void ESFichier::ReplacerCurseur()
    {
    	fseek(fichier,0,SEEK_SET);
    }
     
     
    bool ESFichier::Ecrire(char *ligne)
    {
    	int status;
     
    	// sort si fichier pas ouvert
    	if (fichier == NULL) return false;
     
       else {
    			// ecrit  la ligne
    			status = fprintf (fichier, "%s\n", ligne);
     
    			// Compte rendu d'état
    			return (status != (int)strlen(ligne));
       		}
     
     
    }
     
    void ESFichier::Fermer(void)
    {
    	fclose (fichier);
    }
     
     
     
    bool ESFichier::LireLigne(char *ligne,int numero)
    {
    	char *status;
            int numligne;
    	// sort si fichier pas ouvert
    	if (fichier == NULL) return false;
     
       else {
    	// initialise et lit  la ligne
    	strcpy(ligne,"");
     
             for (numligne=0;numligne<numero;numligne++)
             {
    	status = fgets (ligne, TAILLE_LIGNE, fichier);
             }
    	// supprime l'éventuel "\n"
    	if (strlen(ligne) > 0)
    	{
    		if (ligne[strlen(ligne)-1] == '\n') ligne[strlen(ligne)-1] = '\0';
    	}
     
    	return (status != NULL);
     
     
     
       }
    }
     
    void ESFichier::CompterLigne(int *nbligne)
    {
     
    char *Stat="1";
    char ligne2[255];
    *nbligne=-1;
     
     
    while(Stat!=NULL)
            {
            *nbligne=*nbligne+1;
            Stat = fgets (ligne2, TAILLE_LIGNE, fichier);
            }
     
     
    }
    ESFichier.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
    25
    26
    27
    28
    #ifndef ESFichier_H
    #define ESFichier_H
     
    #include <stdio.h>
    #include <string.h>
    #include <iostream>
    #include <fstream>
    #include <algorithm>
     
    #define TAILLE_LIGNE 255
     
    class ESFichier
    {
    private:
    	FILE *fichier;
            char *Nom;
    public:
    	ESFichier();
            void Ouvrir(char *, char *);
            void Fermer(void);
    	bool Lire(char *);
    	bool Ecrire(char *);
            bool LireLigne(char*,int numero);
            void CompterLigne(int *);
            void ReplacerCurseur();
     
    };
    #endif
    Merci je bataille depuis lomgtemps

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Euh.. Désolé mais pourrais traduire ce que tu appelles "pas bon" ?? Erreur de compilation ? Plantage à l'exécution ? Qu'est-ce qu'il y a ?

    Donne-nous des précisisions et si possible essait de reproduire un code minimal qui pose le même problème, parce que plonger la-dedans sans savoir ce que c'est est un peu fastidieux.

    Déjà à la volée il y a un
    à remplacer par
    car la 1ère version est obsolète et peut empêcher les bons compilateurs de compiler
    Fiquet
    - FAQ SDL
    - FAQ C++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 38
    Points : 10
    Points
    10
    Par défaut
    Je lie un fichier "programme_apt.txt" et je le recopie dans un fichier "programme_iso.txt".

    Le problème c'est que ca lie mais ca le recopie pas, j'utilise la méthode replacercurseur qui me permet de remetre le curseur en haut dés que celui ci a lu le fichier.

  4. #4
    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 : 44
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    c'est comme qui dirait un bon mélange de C et de C++

  5. #5
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Salut
    Comme l'a dit Miles il te faut corriger tes headers pour éviter les .h .
    On trouve une explication dans la faq: http://c.developpez.com/faq/cpp/?pag...le#SL_iostream
    Donc tu dois faire un ptit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    :s/string.h/string
    :s/stdio.h/cstdio
    De plus je ne comprends pas pourquoi tu utilises un tableau:
    et pas vector par exemple; qu'est ce que j'ai contre les tableaux?
    Ca: http://public.research.att.com/~bs/bs_faq2.html#arrays
    etc...

  6. #6
    Membre éclairé Avatar de reggae
    Profil pro
    Inscrit en
    Août 2005
    Messages
    773
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2005
    Messages : 773
    Points : 795
    Points
    795
    Par défaut
    Premièrement, il te faut utiliser le namespace std...
    Deuxièmement, après cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout<<"Fichier recopier en entier"<<endl;
    il faut ôter l'accolade...
    Voilà, il doit encore en avoir car j'ai survolé ton code...

  7. #7
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par Gnux
    Comme l'a dit Miles [...]
    J'ai changé de pseudo ?
    Fiquet
    - FAQ SDL
    - FAQ C++

  8. #8
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par Fiquet
    Citation Envoyé par Gnux
    Comme l'a dit Miles [...]
    J'ai changé de pseudo ?
    Pardon
    Ceci étant dit j'étais d'accord avec toi sur ce point. J'aurais bien aimé que le PO nous montre une version corrigée de son code

  9. #9
    Membre éprouvé Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Points : 933
    Points
    933
    Par défaut
    Je crois bien que ce problème a déjà été évoqué sur 3 pages, et même résolu, dans ce fil : http://www.developpez.net/forums/vie...747125#2747125

    Il semble que le fond du problème ne soit pas lié au langage. Peut-être que Polo40 devrait commencer par apprendre les bases de la programmation (ou, à défaut, lire et appliquer les réponses qui lui ont déjà été fournies ) ?

Discussions similaires

  1. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08
  2. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50
  3. communication entre programmes
    Par jérôme dans le forum C
    Réponses: 12
    Dernier message: 16/04/2002, 08h05
  4. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

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