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 avec lecture de fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut problème avec lecture de fichiers
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
     
    int lire_clavier(char *str, int taille)
    {
        int i;
        fgets(str, taille, stdin);
        str[taille-1] = '\0';
        for(i=0; str[i]; i++) /*supprime le retour chariot */
        {
            if(str[i] == '\n')
            {
                str[i] = '\0';
                break;
            }
        }
        return(i); /* Renvoir 0 si la chaine est vide*/
    }
     
    int main()
    {
        FILE *fp;
        char filename[100];
     
        printf("Nom du fichier a lire : ");
        lire_clavier( filename, sizeof(filename) );
     
        if((fp = fopen(filename, "r")) == NULL)
        {
            fprintf(stderr, "\nErreur lors de l'ouverture du fichier...\n");
            exit(EXIT_FAILURE);
        }
        else
        {
            char infile[sizeof(fp)+1];
     
            printf("\n\n");
            fgets(infile, sizeof(fp), fp);
            fprintf(stdout, "%s", infile);
            printf("\n\n");
            fclose(fp);
            printf("\nPour quitter tappez sur une touche du clavier.\n");
            getch();
            exit(EXIT_SUCCESS);
        }
        return 0;
    }
    Le programme s'execute mais seulement les 3 premiere lettre du .txt s'affiche

    pouvez vous m'aider
    merci.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 476
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            char infile[sizeof(fp)+1];
     
            fgets(infile, sizeof(fp), fp);
    Hello,

    sizeof() est un mot-clé du C, pas une fonction. Et même dans ce cas, cela ne te donnerait pas la taille de ton fichier, puisque ce n'est pas une ressource déjà chargée en mémoire.

    Ce que tu fais ici, c'est demander la taille de fp, lequel est un pointeur sur une structure de type FILE. Un pointeur, sur les machines 32 bits, fait 4 octets. Si c'est la taille que tu donnes à ton buffer et que tu réserves un octet pour le '\0' final, il te reste tout juste de la place pour les trois premiers caractères.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    Le programme s'execute mais seulement les 3 premiere lettre du .txt s'affiche
    En complément, ta saisie est peu orthodoxe et inutilement complexe. Ceci fonctionne :
    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
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    int lire_clavier (char *str, int taille)
    {
       int err;
       fgets (str, taille, stdin);
       {
          /* search */
          char *p = strchr (str, '\n');
          if (p != NULL)
          {
             /* kill */
             *p = '\0';
             err = 0;
          }
          else
          {
             /* purge */
             int c;
             while ((c = getchar ()) != '\n' && c != EOF)
             {
             }
             err = 1;
          }
       }
       return err;                  /* Renvoie 0 si la chaine est vide */
    }
     
    int main (void)
    {
       int ret;
       char filename[100];
     
       printf ("Nom du fichier a lire : ");
       lire_clavier (filename, sizeof (filename));
       {
          FILE *fp = fopen (filename, "r");
          if (fp == NULL)
          {
             fprintf (stderr, "\nErreur lors de l'ouverture du fichier...\n");
             ret = EXIT_FAILURE;
          }
          else
          {
             char infile[128];
     
             printf ("\n\n");
             fgets (infile, sizeof infile, fp);
             fprintf (stdout, "%s", infile);
             printf ("\n\n");
             fclose (fp);
     
     
             ret = EXIT_SUCCESS;
          }
       }
       return ret;
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Ce programme execute bien la totalité de n'importe quel fichier .txt??

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    Ce programme
    Quel programme ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut

    et bien celui que tu as posté ^^

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    et bien celui que tu as posté
    Et comment je peux le deviner ? Tu n'as pas fait de citation...

    Il ne lit qu'une ligne de texte. C'est pas évident ?

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Par défaut
    Il ne lis pa que les 128 premier caractéres???

Discussions similaires

  1. Problème avec lecture de fichier
    Par anthonyplay dans le forum Débuter
    Réponses: 7
    Dernier message: 23/11/2009, 21h50
  2. Réponses: 4
    Dernier message: 19/09/2008, 10h04
  3. Problème de lecture de fichier .txt avec Flash
    Par cdevl32 dans le forum Flex
    Réponses: 0
    Dernier message: 25/05/2008, 17h35
  4. Problême avec lecture tous fichier Vista
    Par babeth38 dans le forum Windows Vista
    Réponses: 4
    Dernier message: 03/04/2008, 09h06
  5. [DOM4J] Problème de lecture de fichier xml avec dom4j
    Par santana2006 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 05/04/2006, 16h52

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