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 :

les entrées sorties sur fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut les entrées sorties sur fichiers
    salut.je compte faire un programme qui aquis le nom d'un fichier et puis qu'il affiche son contenu,alors j'utilise la fonction "scanf" ou "cin" mais le probleme c'est les espaces blancs.alors j'ai du utiliser scanf mais caractere par caractere pour ne pas oublier les espaces blancs et puis ajouter le caractere '\0' a la fin pour que se soit une chaine voici le 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
    #include<stdio.h>
    #include<iostream.h>
    void main()
    {
     first:
     int c;
     int i;
     char t[100];
     FILE *fi;
     for(i=0;t[i-1]!='\n';i++)
     {
      scanf("%c",&t[i]);
     }
     t[i]='\0';
     if((fi=fopen(t,"r"))==NULL)
      {
       printf("erreur ouverture fichier\n");
       goto first;
      }
     while((c=fgetc(fi))!=EOF)
      printf("%c",c);
     goto first;
    }
    mais le "fopen" rend la valeur NULL et le fichier ne s'ouvre pas. veuillez m'aider stp.
    merci d'avance.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 544
    Points
    41 544
    Par défaut

    As-tu essayé d'afficher t pour commencer ?

    PS: Tu sais, le goto est "considered harmful" en C. Il est supposé être utilisé avec parcimonie...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    oui exactement et sa a affiche correctement la chaine que j'ai ecrit.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    emmanuel je pense pas que "fgetc" c'est mon probleme la c juste pour afficher le contenu du fichier mais moi j'arrive meme pas a l'ouvrir.

  5. #5
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par snakemetalgear
    emmanuel je pense pas que "fgetc" c'est mon probleme la c juste pour afficher le contenu du fichier mais moi j'arrive meme pas a l'ouvrir.
    Il faut saisir le nom correctement et que le fichier existe à l'emplacement prévu. C'est le cas ?

    Affiche le nom.

    (Je n'ai pas parlé de fgetc(), mais de fgets()).

    Tu as corrigé le bug du argv[0] ?

    Poste la dernière version du code corrigé et donne un exemple de ligne de commande.
    Pas de Wi-Fi à la maison : CPL

  6. #6
    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 : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut
    Sauf erreur de ma part avec ta methode de saisie tu te retrouve ave le '\n' dans le nom de fichier. Il est donc tout a fait normal que l'ouverture echoue, il convient de supprimer ce \n avant d'effectuer l'ouverture

    Mis a part ca :
    * iostream.h ne sert a rien et n'existe pas en C
    * ce n'est pas void main() mais int main(void)
    * tu ne verifies jamais lors de la lecture si tu depasse la taille max du tableau, il y a un risque de debordement de buffer
    * je te conseille vivement de remplacer ton scanf par un fgets()
    * de meme, tu devrais degager les goto et mettre en place une vrai boucle
    * le fichier n'est jamais ferme

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 75
    Points : 35
    Points
    35
    Par défaut
    non mais "fgets" lis une chaine d'un fichier et le met sur un tableau mais moi je n'arrive meme pas a ouvrir le fichier quan je met:
    fi=fopen(t,"r");
    je pense que le probleme c le tableau t ou je met le nom du fichier aquis pas scanf
    si seulement y'avais une fonction qui aquis une chaine et le stoque sur un tableau en incluant les espaces blancs.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 544
    Points
    41 544
    Par défaut
    Et cette fonction s'appelle fgets().
    Simplement, après il faut virer le \n.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par snakemetalgear
    salut.je compte faire un programme qui aquis le nom d'un fichier et puis qu'il affiche son contenu,alors j'utilise la fonction "scanf" ou "cin" mais le probleme c'est les espaces blancs.
    Pour saisir ou lire une ligne : fgets(). Il faut ensuite retirer proprement le '\n'.

    http://emmanuel-delahaye.developpez....tes.htm#saisie
    http://emmanuel-delahaye.developpez....s.htm#fichiers

    Quand à ton code, il est horrible !

    Je pense qu'il bat tous les records sur l'échelle de Goret...

    http://emmanuel-delahaye.developpez.com/goret.htm

    Il va falloir que je crée un niveau supplémentaire pour "mélange de C et de C++ défraichi"...
    Pas de Wi-Fi à la maison : CPL

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [UML] Diagramme d'entrée/sortie sur les fichiers
    Par ProToXiDe dans le forum ALM
    Réponses: 0
    Dernier message: 23/02/2015, 13h29
  2. [Jena] Extraire les entrées-sorties d'un fichier OWL-S
    Par amimoh dans le forum Frameworks
    Réponses: 0
    Dernier message: 11/06/2012, 11h32
  3. cours sur Les Entrées / Sorties vb.net
    Par prikama dans le forum VB.NET
    Réponses: 1
    Dernier message: 22/06/2009, 19h13
  4. Réponses: 1
    Dernier message: 25/03/2008, 14h31
  5. statistiques sur les lignes et colonnes d'un fichier
    Par ericbareke dans le forum Langage
    Réponses: 5
    Dernier message: 23/03/2006, 16h09

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