GTK - Caractères bizares - C - Programmation
Marsh Posté le 18-09-2008 à 14:29:24
Oui, quand j'ai initialisé chaine en mettant des espaces partout, j'ai mis un '\0' dans la dernière case.
Et une fois que je récupére la chaine, ce sont toutes les cases qui viennent après "coucou" jusqu'à la dernière qui sont polluées.
Marsh Posté le 18-09-2008 à 15:13:43
chaine = (char*) gtk_entry_get_text(GTK_ENTRY(pEntry));
avec pEntry un argument de ma fonction Callback (un GtkWidget *).
A noter que pour l'instant, la seule solution que j'ai trouvé, c'est de compléter par des espaces mes chaines lors des saisies pour atteindre la taille max.
Marsh Posté le 18-09-2008 à 15:38:05
bon GTK me dit :
Citation : |
Donc moi je ferais un strcpy au lieu d'un cast moche en char*
Marsh Posté le 18-09-2008 à 15:51:23
salut, il est marque ceci dans leur doc au sujet de gtk_entry_get_text :
http://library.gnome.org/devel/gtk [...] y-get-text
"This string points to internally allocated storage in the widget and must not be freed, modified or stored. "
Après, je vois une fonction gtk_entry_get_text_length (), du coups est-ce qu'un
Code :
|
Marsh Posté le 18-09-2008 à 14:14:54
Bonjour,
J'ai commencé GTK il n'y a pas longtemps, et je suis actuellement bloqué sur un problème de caractères bizzares.
Dans une fénêtre, je demande à l'utilisateur de rentrer une chaîne de caractère (d'une taille max que je définis), j'utilise un signal pour récupérer cette chaîne lorsque ce dernier tape sur "Enter".
Je récupére la chaîne de caractères dans la fonction callback avec :
chaine=gtk_entry_get_text(GTK_ENTRY(pEntry));
(sachant que chaine a bien été définie, malloc etc, et les cast sont ok).
Le problème : quand la chaîne de l'utilisateur est strictement inférieure à la taille max (ce qui arrive tout le temps...), je retrouve dans ma chaîne, des caractères bizarres (des carrés, des @, ...).
Ex : je rentre "coucou" dans la fenêtre, je fais "Enter", et je récupère comme chaîne coucou @? Ї?h??M??
Je me doute que cela vient du fait que il peut y avoir n'importe quoi comme caractères après le coucou parce que ya pas eu d'initialisation, mais comment est-ce qu'on peut initialiser en mettant des espaces dans toutes les cases, gtk_entry_get_text(GTK_ENTRY(pEntry)) ???
Merci pour votre aide