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 !!
Version imprimable
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 !!
Salut,
Ça ne veut pas dire grand chose. Erreur de segmentation ? Mauvaise valeur de retour ?Citation:
le code ne s'execute pas
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.
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:
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.
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) ?