salut à tous
Je voudrais savoir comment copier une chaîne de caractère et le coller dans un char[]
exemple :
char texte[256];
&texte="voila le texte que je veut ajouter";
Cette méthode ne fonctionne pas.
Quelqu'un aurait t-il le moyen ou la méthode pour effectuer cette opération ????
strcpy????
j'ai déjà essayer et il ne veut pas ! pourquoi ?????
# Salut
Posté par DjinnS . Évalué à 3.
Est ce que ca correspond à ce que tu attends ?
[^] # Re: Salut
Posté par angsthase . Évalué à 1.
char test[]= b>{ "machaîne" };
et cela ne fonctionne seulement pour l'initialisation.
Enfin je crois. J'avais testé il y a longtemps et pour moi ca ne marchais pas; et je n'ai pas réessayer depuis......
Je voudrais pouvoir changer le texte autant de fois que je le veux.
Je te remercie quand même, et j'ai trouver mon bonheur ci dessous!!!!
Merci à tous.
# strncpy
Posté par hervé^3527 . Évalué à 3.
strncpy(text,"mon texte a mettre dans le tableau",256);
vaut mieux utiliser strncpy qui peut limiter le nombre de caracteres a coller dans ton tableau de char plutot qui strcpy qui t'enmenera surement vers un segmentation fault si la chaine a coller est plus grande que le tableau
en ésperant que ca t'a aidé
[^] # Re: strncpy
Posté par Nicolas Bernard (site web personnel) . Évalué à 3.
char text[256];
strncpy(text,"mon texte a mettre dans le tableau",255);
text[255] = 0;
[^] # Re: strncpy
Posté par Bastien Mourgues . Évalué à 1.
char text[256]
snprintf(text, sizeof(text), "%s", "mon texte à ...");
pas de risque de débordement, et on es sur d'avoir le caractère NUL en fin de chaine.
[^] # Re: strncpy
Posté par Nicolas Bernard (site web personnel) . Évalué à 2.
- on voit moins immédiatement ce qui se passe;
- l'utilisation de snprintf est "overkill", et l'exécution est plus longue (je sais, sur les processeurs actuels on le voit pas, mais c'est ce genre de choses qui fait que les programmes sont toujours aussi lents en dépit des machines qui accélèrent). Cf l'implémentation dans la libc de ton choix.
Je reconnais que cela reste assez subjectif.
[^] # Re: strncpy
Posté par Denis Montjoie (site web personnel) . Évalué à 2.
strncpy(text," le texte",sizeof(text);
Le sizeof() permet de s'assurer que tu copie bien la taille de text.
Si tu change le text[256] en text[2] tu aura pas a changer tous les strncpy.
Il faut eviter toute valeur numérique en brut sujette à changement.
Utilise au maximum les sizeof et autres #define.
#define TAILLETEXTE 256
char text[TAILLETEXTE];
strncpy(text,"mon texte a mettre dans le tableau",TAILLETEXTE );
la cest plus propre:D
[^] # Re: strncpy
Posté par angsthase . Évalué à 2.
Ca marche!!!
# glib
Posté par Christophe Fergeau . Évalué à 2.
# Plus fondamental !
Posté par abgech . Évalué à 2.
Mais j'aimerais aller un peu plus au fond des choses.
Lorsque tu écris:
Tu définis deux choses pour le compilateur:
1) Une zone mémoire de 256 char
2) Un identificateur texte qu'en première analyse (pour faire simple) tu peux assimiler à une constante de type pointeur sur char qui pointe sur la zone définie.
Lorsque tu écris:
&texte="voila le texte que je veut ajouter";
Tu tentes d'affecter à l'adresse de la constante texte , l'adresse d'une autre constante ("voila le texte que je veut ajouter"), le compilateur ne devrait pas être franchement d'accord..
Amha, une bonne solution, robuste, devrait être:
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.