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 :

tableau emplie par fgets


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut tableau emplie par fgets
    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
     
    int fichierdInput( FILE *Input )
    {
    int ligne = 0;
    unsigned int ln = 0;
    char basebuf[1024] = {0};
    char *buff[1024] = {0};
     
       while ( NULL != fgets( basebuf, sizeof basebuf, Input ) ) {
          if ( ( ln = strlen( basebuf ) ) > 1 ) {
             buff[ligne] = ( char * ) malloc( ( ln * sizeof( char ) ) + 1 );
     
                   if ( *( buff + ligne ) != NULL )
                      *buff[ligne] = *basebuf;
                   else
                      printf ( "\nLigne: %d  Mémoire non allouée. %p\n", __LINE__, *( buff + ligne ) );
     
             printf( "%d  %p  %s\n", ligne, buff[ligne], buff[ligne]);
             ligne++;
          }
       }
    sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ln =    19
    0  003D17A0  A?=
    ln =    19
    1  003D17C0  A?=
    ln =    31
    2  003D17E0  C?=
    ln =    31
    3  003D1808  C?=
    ln =    63
    4  003D1830  E?=
     
    etc
    Pourquoi n'obtiens-je que 3 caractères?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    *buff[ligne] = *basebuf;
    Cette ligne copie un caractère de basebuf (le premier) dans le premier élément du tableau buff[ligne].
    C'est tout.
    Le tableau buff[ligne] n'est pas autrement modifié (notamment, aucun zéro terminal n'y est placé) et le reste de son contenu est indéterminé.
    L'affichage de ce tableau avec %s, va donc donner le premier caractère, suivi de n'importe quoi jusqu'à ce que par hasard, printf() trouve 0 et estime que la chaîne est terminée.

  3. #3
    Membre très actif Avatar de J4e8a16n
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 271
    Par défaut
    fgets n'ajoute-t-il pas un 0 terminal à basebuf?

    Comme ça peutêtre?
    strcpy(buff[ligne], basebuf);

  4. #4
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Citation Envoyé par J4e8a16n Voir le message
    fgets n'ajoute-t-il pas un 0 terminal à basebuf?
    Si, et il met aussi le '\n' si on a atteint la fin de la ligne
    Comme ça peutêtre?
    strcpy(buff[ligne], basebuf);
    Oui, c'est comme cela qu'on copie une chaine de caractères.

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

Discussions similaires

  1. [VBA-E]actualisation d'un tableau dynamique par macro
    Par illight dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/04/2006, 16h37
  2. [HTML] Scroller un tableau généré par PHP
    Par guy2004 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 11/04/2006, 12h07
  3. [Tableaux] récuperer une variable tableau passé par URL
    Par molesqualeux dans le forum Langage
    Réponses: 2
    Dernier message: 23/12/2005, 01h12
  4. [HTML] Construire un tableau colonne par colonne ?
    Par Cthulhu 22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/05/2005, 15h31
  5. URGENt: recherche dans un tableau trié par ordre alphabetiqu
    Par JulPop dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/02/2005, 17h21

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