C++ struct et les chaînes de caractères
Résolu/Fermé
dodoecchi
Messages postés
454
Date d'inscription
samedi 9 septembre 2006
Statut
Membre
Dernière intervention
26 avril 2012
-
13 juil. 2010 à 23:30
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 juil. 2010 à 11:25
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 juil. 2010 à 11:25
A voir également:
- C++ struct et les chaînes de caractères
- Caractères ascii - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères spéciaux clavier azerty - Guide
- Caractères spéciaux - Guide
- Exemple de mot de passe à 8 caractères - Guide
2 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 juil. 2010 à 00:40
14 juil. 2010 à 00:40
Bonjour,
En C/C++, tu ne peux utiliser l'opérateur d'affectation (=) pour affecter une chaîne de caractère qu'à la déclaration.
Donc :
mais
Si tu souhaites affecter le tableau machin par la suite, il te faudra utiliser la fonction strcpy (ou strncpy, mieux sécurisé).
Ce qui donnera : strcpy(machin, "test");
Mais en C++, on évite généralement d'utiliser les tableaux de char (utilisé en C) puisque le paradigme objet a permis la création de la classe "string". Cette dernière te permettra d'utiliser le signe d'affectation.
Si tu souhaites plus de précision, n'hésite pas.
Cdlt,
En C/C++, tu ne peux utiliser l'opérateur d'affectation (=) pour affecter une chaîne de caractère qu'à la déclaration.
Donc :
char machin[10]; machin="test"; /*erreur, celle que tu as*/
mais
char machin[10]="test"; /*ok, ça marche*/
Si tu souhaites affecter le tableau machin par la suite, il te faudra utiliser la fonction strcpy (ou strncpy, mieux sécurisé).
Ce qui donnera : strcpy(machin, "test");
Mais en C++, on évite généralement d'utiliser les tableaux de char (utilisé en C) puisque le paradigme objet a permis la création de la classe "string". Cette dernière te permettra d'utiliser le signe d'affectation.
Si tu souhaites plus de précision, n'hésite pas.
Cdlt,
Utilisateur anonyme
13 juil. 2010 à 23:34
13 juil. 2010 à 23:34
Salut !
Ta chaine ne fait que 5 caractères par rapport à la déclaration 50 caractères. (4 lettres + une).
Je ne me rappelle plus de ce qu'il faut faire, mais essaies avec une allocation normale, avec le string de Qt par exemple, ou alors fais en sorte que la longueur soit dynamique ...
Excuse-moi si je me trompe :S
Ta chaine ne fait que 5 caractères par rapport à la déclaration 50 caractères. (4 lettres + une).
Je ne me rappelle plus de ce qu'il faut faire, mais essaies avec une allocation normale, avec le string de Qt par exemple, ou alors fais en sorte que la longueur soit dynamique ...
Excuse-moi si je me trompe :S
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 juil. 2010 à 00:33
14 juil. 2010 à 00:33
Utiliser une bibliothèque graphique pour une chaîne de caractère ? :D.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 juil. 2010 à 00:50
14 juil. 2010 à 00:50
Je sais bien que sa classe est excellente. Je dis juste qu'utiliser Qt juste pour gérer ça, c'est inutile ^^.
14 juil. 2010 à 09:15
Par contre, si j'utilise
le signe d'affectation n'a pas l'air de faire effet : le prinft affiche (null)
Modifié par chuka le 14/07/2010 à 09:30
je suis pas expert en c++, mais pourquoi ne pas utiliser cout au lieu de printf??
sinon pour printf, cela devrait faire l'affaire...:
@+
14 juil. 2010 à 09:50
mais je crois bien que je vais utiliser cout maintenant. Quel bordel pour afficher une string
14 juil. 2010 à 11:25
En C++, on utilise plutôt cout (au lieu de printf), cin (au lieu de scanf), string (au lieu de char []), etc.
Cdlt,