C++ struct et les chaînes de caractères
Résolu
dodoecchi
Messages postés
454
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonsoir à tous,
ça a l'air stupide mais j'arrive pas à mettre une chaîne de caractère dans une structure!
L'erreur :
merci d'avance,
Dorian
ça a l'air stupide mais j'arrive pas à mettre une chaîne de caractère dans une structure!
#include "stdafx.h" #include <cstdlib> int main(void) { typedef struct { char machin[50]; } test; test abc; abc.machin="test"; printf("%s\n", abc.machin); std::system("PAUSE"); }
L'erreur :
1>c:\users\....cpp(12) : error C2440: '=' : impossible de convertir de 'const char [5]' en 'char [50]'
merci d'avance,
Dorian
A voir également:
- C++ struct et les chaînes de caractères
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
2 réponses
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,
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
Par contre, si j'utilise
le signe d'affectation n'a pas l'air de faire effet : le prinft affiche (null)
je suis pas expert en c++, mais pourquoi ne pas utiliser cout au lieu de printf??
sinon pour printf, cela devrait faire l'affaire...:
@+
mais je crois bien que je vais utiliser cout maintenant. Quel bordel pour afficher une string
En C++, on utilise plutôt cout (au lieu de printf), cin (au lieu de scanf), string (au lieu de char []), etc.
Cdlt,