Salut ! ,
est-ce qu il y a un moyen d'avoir genre un éditeur de texte en sdl
- > faire un scanf d'une chaine de caractères,
comment ?
et est ce que c'est possible d'afficher l’édition du texte en direct !! avec sdl_TTF ?
Merci d'avance![]()
Salut ! ,
est-ce qu il y a un moyen d'avoir genre un éditeur de texte en sdl
- > faire un scanf d'une chaine de caractères,
comment ?
et est ce que c'est possible d'afficher l’édition du texte en direct !! avec sdl_TTF ?
Merci d'avance![]()
Ouais rien de empêche c'est quoi le souci ?
Grosso modo , tu récupères les éventements tapé.
Tu les met dans un tableau de char , tu l'affiche avec SDL_TTF.
merci pour ta réponse
j'ai essayé ça et ça marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 void nameinput(void) { char *str= ""; SDL_EnableUNICODE( SDL_ENABLE ); if( event.type == SDL_KEYDOWN ) { if( strlen(str) <= 16 ) { if( event.key.keysym.unicode == (Uint16)' ' ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'0' ) && ( event.key.keysym.unicode <= (Uint16)'9' ) ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'A' ) && ( event.key.keysym.unicode <= (Uint16)'Z' ) ) { str += (char)event.key.keysym.unicode; } else if( ( event.key.keysym.unicode >= (Uint16)'a' ) && ( event.key.keysym.unicode <= (Uint16)'z' ) ) { str += (char)event.key.keysym.unicode; } } /* if( ( event.key.keysym.sym == SDLK_BACKSPACE ) && ( strlen(str) != 0 ) ) { str.erase( strlen(str) - 1 ); }*/ if( ( event.type == SDL_KEYDOWN ) && ( event.key.keysym.sym == SDLK_RETURN ) ) { namewritten=1; } } SDL_EnableUNICODE( SDL_DISABLE ); drawString(str, 37, 10, font); }
problème résolue;
toujours les pointeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 str[strlen(str)] = (char)event.key.keysym.unicode;![]()
Oh non, ton problème n'est pas résolu!
str pointe bel et bien sur quelque chose, mais il n'y a pas d'espace alloué là où pointe cette variable.... tu vas, à un moment ou un autre, aller écraser quelque chose.... plantage en perspective !
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *str= "";
Effectivement, il faut que tu alloues un espace suffisant pour ce que tu veux faire de ta chaîne ou si tu ne connaît pas la taille de ce que tu veux mettre dedans, allocation par progression géométrique
Si c'est une taille fixe dès le départ tu peux aussi au mieux utiliser un tableau statique char tab[TAB_SIZE] = { 0 };
Si tu alloues dynamiquement, oublie pas non plus de libérer l'espace avec free() !
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Partager