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 :

problème de fopen ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut problème de fopen ?
    Bonjour à tous.
    Voila, je suis en train d'écrire un programme pour traiter un fichier texte..
    Les lignes du fichier sont sous cette forme :

    aaaaaaaa:bbbbbbbbbbbbb:isherivherughemgrioehrmghioeshogrheriogh
    ..........

    Le but pour moi est d'extraire le "aaaaa" et le "bbbbb" et de les écrire proprement dans un autre fichier sous la forme :

    aaaaaaaa bbbbbbbbbbbbb
    ..........

    Le reste de la ligne m'importe peu.
    J'ai donc écrit le code ci-dessous, mais il me met "Probleme fichier texte"...
    J'en conclus que le pointeur vers texte.txt = NULL ... mais je ne vois pas comment y remedier.
    Merci d'avance.




    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
    #include <stdlib.h>
    #include <stdio.h>
     
     
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
    int fclose(FILE* pointeurSurFichier);
    int fgetc(FILE* pointeurDeFichier);
    int fseek(FILE* pointeurSurFichier, long deplacement, int origine);
     
     
    int main()
    {
    FILE* fichier = NULL;
    FILE* fichier2 = NULL;
    int caractereActuel = 0;
     
    fichier = fopen("mot.txt", "r");
    fichier2 = fopen("texte.txt", "w");
     
    if (fichier != NULL)
    {
    if (fichier2 != NULL)
    	{
    	do{
                caractereActuel = fgetc(fichier); // On lit le caractère
    			if(caractereActuel >= 'a' && caractereActuel <= 'z')
    				{
    				fseek(fichier, -1, SEEK_CUR);
    				while (caractereActuel != ':')
    					{
    					caractereActuel = fgetc(fichier);
    					fprintf(fichier2, "%c", caractereActuel);
    					}
    				fseek(fichier, 1, SEEK_CUR);
    				fprintf(fichier2, " ");
    				while (caractereActuel != ':')
    					{
    					caractereActuel = fgetc(fichier);
    					fprintf(fichier2, "%c", caractereActuel);
    					}
    				fprintf(fichier2, "\n");
    				while (caractereActuel != '\n')
    					{
    					caractereActuel = fgetc(fichier);
    					}
    				fseek(fichier, 1, SEEK_CUR);
    				} 
    		} 
    	while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
    	fclose(fichier);
    	fclose(fichier2); 
    	}
    else 
    {printf("Probleme fichier mot.\n");}
    }
    else {printf("Probleme fichier texte.\n");}
    return 0;
    }

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Thomas13 Voir le message
    J'ai donc écrit le code ci-dessous, mais il me met "Probleme fichier texte"...
    J'en conclus que le pointeur vers texte.txt = NULL ... mais je ne vois pas comment y remedier.
    Non, il met "Probleme fichier texte" si fichier est nul, donc si mot n'a pas pu être ouvert.

    Généralement les raisons rencontrées sont :
    • L'absence du fichier (cas typique, le fichier n'est pas dans le répertoire dans lequel tourne l'exécutable).
    • Droit insuffisant.


    Citation Envoyé par Thomas13 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    FILE* fopen(const char* nomDuFichier, const char* modeOuverture);
    int fclose(FILE* pointeurSurFichier);
    int fgetc(FILE* pointeurDeFichier);
    int fseek(FILE* pointeurSurFichier, long deplacement, int origine);
    Pourquoi avoir redéclaré ces fonctions ? Il ne faut pas déclaré les fonctions standard mais inclure le header qui les contient.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    Bonjour,
    merci de ta réponse (et merci aux modérateurs d'avoir mis les balises codes).
    En fait il y a une erreur dans mon code, a la fin j'ai inversé les printf...
    Mais sinon j'ai bien le fichier mot.txt dans le même dossier que l'executable et c'est pour ca que je ne comprends pas ce qui se passe...
    (Pour les droits, je suis admin et donc pas de problème)...
    Merci d'avance pour vos réponses.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    fgets + strtok

    serait ta solution..

  5. #5
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Citation Envoyé par Thomas13 Voir le message
    Mais sinon j'ai bien le fichier mot.txt dans le même dossier que l'executable et c'est pour ca que je ne comprends pas ce qui se passe...
    Comment lances-tu l'exécutable ? Depuis une console ou depuis l'environnement de développement ?

    En effet, le fichier ne doit pas se trouver dans le répertoire contenant l'exécutable mais dans le répertoire dans lequel tourne le process. C'est généralement le même mais pas toujours, typiquement, certains environnement de développement exécute le process dans le répertoire racine du projet et non dans le répertoire contenant l'exécutable.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 3
    Par défaut
    Merci pour cette info !!!
    Je suis presque sur que ca vient de là car j'ai retrouvé des fichiers texte à des endroits bizarres...
    Merci beaucoup !!

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    juste un détail, ton

    n'est pas au bon endroit, un cran trop loin

Discussions similaires

  1. Problème avec fopen
    Par morgan47 dans le forum Langage
    Réponses: 5
    Dernier message: 21/12/2006, 22h47
  2. problème avec fopen
    Par eoberlin dans le forum C++
    Réponses: 10
    Dernier message: 26/08/2006, 20h26
  3. Problème avec fopen
    Par Fonzy007 dans le forum Langage
    Réponses: 2
    Dernier message: 24/07/2006, 18h15
  4. [FTP] Problème avec fopen sur URL
    Par Biboune2008 dans le forum Langage
    Réponses: 14
    Dernier message: 22/06/2006, 17h00
  5. Problème avec fopen
    Par Binouce dans le forum C
    Réponses: 10
    Dernier message: 15/01/2006, 13h59

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