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 :

chaine de caractere


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2012
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Août 2012
    Messages : 5
    Par défaut chaine de caractere
    Salut.
    J'ai une fonction init (int n, char *nom) qui prend comme parametre un char *nom et j'ai besoin de savoir la taille de ma chaine
    mais quand j'utilise strlen (char) le code ne s'execute pas !!

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    le code ne s'execute pas
    Ça ne veut pas dire grand chose. Erreur de segmentation ? Mauvaise valeur de retour ?

    Il faut que tu saches que strlen fonctionne avec une chaine char* qui est terminée pas le caractère '\0'. Par conséquent il faut que cette chaine soit terminée par ce caractère.

    La deuxième solution c'est d'utiliser les chaines de caractère en maintenant une variable "taille" toujours à jour.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    87
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 87
    Par défaut
    Citation Envoyé par Trademark Voir le message
    ... La deuxième solution c'est d'utiliser les chaines de caractère en maintenant une variable "taille" toujours à jour.
    Je me permet juste d'ajouter que la meilleure solution (si c'est possible) est d'utiliser un objet std::string à la place de la chaîne de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    init(const std::string& nom) //Si ta fonction ne fais que lire le contenu de nom.
    init (std::string& nom) //Si nom dois être modifié par ta fonction.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Il faudrait qu'on voie un peu plus ton code (l'appel à la fonction, le contenu de la fonction, ...).
    Selon l'utilisation que tu va faire de ta chaîne de caractère il peut en effet être intéressant d'utiliser un std::string.

    Sinon on n'utilise pas strlen(char) mais sizeof(char) pour connaitre la taille d'un char (ou strlen(char *) pour connaitre la taille d'une chaîne de caractère comme l'a dit Trademark) qui renverra la taille en octet d'un char soit 1.
    Je suppose que n est la taille de ta chaîne de caractère et que tu voulais faire :
    int tailleEnOctet = n * sizeof(char) ?

  5. #5
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Sinon on n'utilise pas strlen(char) mais sizeof(char) pour connaitre la taille d'un char (ou strlen(char *) pour connaitre la taille d'une chaîne de caractère comme l'a dit Trademark) qui renverra la taille en octet d'un char soit 1.
    Juste pour pinailler, sizeof ne retourne pas la taille en octet, mais en nombre de char. Et donc par définition, sizeof(char)==1. Sur un système hypothétique où les char feraient 100 bits et les entiers 300, on aurait sizeof(char)==1 et sizeof(int)==3.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  6. #6
    Membre chevronné Avatar de srvremi
    Homme Profil pro
    Directeur d'école d'ingénieurs
    Inscrit en
    Mars 2002
    Messages
    554
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Directeur d'école d'ingénieurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 554
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Juste pour pinailler, sizeof ne retourne pas la taille en octet, mais en nombre de char. Et donc par définition, sizeof(char)==1. Sur un système hypothétique où les char feraient 100 bits et les entiers 300, on aurait sizeof(char)==1 et sizeof(int)==3.
    Ce n'est pas du tout du pinaillage, tu as bien raison de le préciser. Dans le cadre d'un programme embarqué, j'avais justement le cas de sizeof(int)!=sizeof(char). Ce n'est pas courant, mais il faut bien l'avoir en tête.

    @+
    Rémi

Discussions similaires

  1. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  2. Réponses: 13
    Dernier message: 13/06/2003, 14h13
  3. Pb Update avec chaine de caractere
    Par JuJu° dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2003, 15h58
  4. [LG]comparaison de chaines de caracteres
    Par thesam dans le forum Langage
    Réponses: 6
    Dernier message: 20/05/2003, 22h41
  5. Probleme sur les chaines de caractere
    Par scorpiwolf dans le forum C
    Réponses: 8
    Dernier message: 06/05/2002, 19h01

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