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 :

sizeof


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut sizeof
    sizeof prend un type ou bien un expression, je me demandais:

    je travaille sur une chaine

    char *s
    s="glouglou"

    je veux avoir sa taille mais je ne peux utiliser string.h, alors je voulais utiliser sizeof.

    Le pb, c que sizeof(s) me renvoie 4, surmt la taille d'un pointeur....
    y a til une manière pour kil reconnaisse s comme la chaine "glouglou" et non comme un pointeur ?

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2003
    Messages
    196
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 196
    Par défaut
    Slt

    char *s est un pointeur sur un type char tu ne peux pas utiliser
    sizeof() avec un pointeur.


    char Montableau[10+1]="glouglou";

    sizeof(Montableau); // Taille du tableau entier
    sizeof(Montableau[0]); // Taille d'un élément du tableau
    sizeof(char); // Taille en byte d'un élèment de type char

    Bref moi je suis novice c'est à confirmer...

  3. #3
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Bonjour,

    Tout d'abord, sizeof() te renvoie la taille en octet utilisée pour stocker la variable passée en argument (en l'occurence un pointeur dans ton cas) avec des particularité pour les tableaux (cf post de LDDL).

    Si tu cherches seulement à avoir la taille de ta chaîne tu peux utiliser le code suivant par exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    char *s;
    s = "glouglou";
    int i = 0;
    while(*s!='\0') // caractère de fin de chaîne
    {
         i++;
         s++; // parcourt la chaîne
    }
    il faut bien entendu utiliser une copie de ton pointeur sinon tu perds l'information (ce que je n'ai pas fait ici)

    Eric

  4. #4
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    C'est exact, sauf que si tu mets une taille explicite à ton tableau, tu en connais sa longueur a priori

    En revanche,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char chaine[] = "Ceci est une chaîne dont je veux savoir sa longueur";
    En faisant sizeof(chaine) ça devrait te donner la longueur (avec le \0 compris, donc il faudra ôter 1).

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 50
    Par défaut
    Je suis peut-être complètement a la ramasse, mais personnellement j'aurais plutot utilisé "strlen()" qui renvoi le nombre de caractère d'une chaine. etant donné que le + souvent un caractère = 1 octet,

    taille de la chaine en octet = strlen(chaine);

    PS : Dans mes souvenirs le caractère '\0' n'est pas compté.
    bon courage

  6. #6
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Tu as entièrement raison, mais en consultant le post initial tu verras que drKzs ne souhaite/peut utiliser string.h.

  7. #7
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 506
    Par défaut
    ok, merci pour vos réponses

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

Discussions similaires

  1. sizeof() d'une structure
    Par tut dans le forum MFC
    Réponses: 12
    Dernier message: 29/08/2006, 18h21
  2. #define sizeof(pointeur)
    Par le mage tophinus dans le forum C
    Réponses: 6
    Dernier message: 23/01/2006, 20h08
  3. utilisation de sizeof
    Par Mokhtar BEN MESSAOUD dans le forum C
    Réponses: 13
    Dernier message: 02/12/2005, 18h16
  4. Sizeof d'un pointeur sur char ...
    Par Mike888 dans le forum C
    Réponses: 8
    Dernier message: 03/11/2005, 13h04
  5. Erreurs (sizeof)
    Par deepfear dans le forum C
    Réponses: 13
    Dernier message: 25/09/2003, 13h56

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