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 :

Lire un tableau avec fread : besoin de "&" ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Par défaut Lire un tableau avec fread : besoin de "&" ?
    Bonjour,
    Depuis toujours, pour lire un tableau en binaire dans un fichier, j'utilise fread de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char tableau[25];
    FILE *fichier = fopen("save", "rb");
    fread(&tableau, sizeof(tableau), 1, fichier);

    Or, je viens de pércuter que, un tableau étant déjà une sorte de pointeur, pour désigner leur adresse il ne faut pas mettre de "&".

    Il faudrait donc faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fread(tableau, sizeof(tableau), 1, fichier);

    Mais je n'ai jamais eu de problème, et j'ai essayé les 2, je n'ai pas vu de différence. Comment est-ce possible ? Cela ne devrait pas être une erreur abominable ? Est-ce le compilateur (j'utilise codeblock) qui corrige tout seul la faute ? Et surtout est ce que je peux continuer à écrire "&tableau" sans risque ?

    Merci d'avance!

  2. #2
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 496
    Billets dans le blog
    1
    Par défaut
    C'est parce que les 2 expressions ont la même valeur que cela fonctionne

    https://gradot.wordpress.com/2012/08...ointeurs-en-c/

  3. #3
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Par défaut
    Ahh d'accord, merci! Super l'article pour comprendre la différence entre tableau et pointeur!

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 133
    Par défaut
    Je pense qu'il y a déjà un problème de compréhension avec les pointeurs avant même de pouvoir comparer tableau et pointeur...

    Qu'est-ce pour toi la variable tableau seul, sans autres opérateurs autour ?

  5. #5
    Membre averti
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Par défaut
    Pour l'instant je dirais que c'est un pointeur sur la première case du tableau, mais je n'ai pas encore lu l'article et je m'attend à ce que ce soit un peu plus complexe que ça.

  6. #6
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 133
    Par défaut
    Pour l'instant je dirais que c'est un pointeur sur la première case du tableau, mais je n'ai pas encore lu l'article et je m'attend à ce que ce soit un peu plus complexe que ça.
    Alors peut-être que c'est le terme pointeur qui n'est pas clair, en ce qui me concerne je préfère dire que tableau est l'adresse du 1er élément du tableau. Ce qui est équivalent à exactement ce terme si on traduit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char *p = &(tableau[0]);
    Je préfère cette dernière que je trouve plus explicite quand on a pas une bonne maîtrise des pointeurs... une fois cette maîtrise, tu pourras utiliser tableau sans doute possible.

    Autre solution possible

    Au choix l'une des deux expriment clairement ce que tu veux, c'est à dire une adresse, car l'esperluette est l'opérateur renvoyant l'adresse de l'objet.

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

Discussions similaires

  1. alterner les couleurs dans un tableau avec xsl
    Par Eithelgul dans le forum XSL/XSLT/XPATH
    Réponses: 14
    Dernier message: 03/05/2015, 23h29
  2. [Excel] Lire un tableau Excel avec PHP
    Par cambonjp dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 05/10/2007, 17h46
  3. [ZIP]besoin de lire des fichiers avec l'extension tar.gz
    Par mathieublanc13 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 24/05/2004, 13h35

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