Invalid conversion from char to const char*
Fermé
pierref17
Messages postés
6
Date d'inscription
mercredi 18 novembre 2009
Statut
Membre
Dernière intervention
14 novembre 2013
-
Modifié par pierref17 le 14/11/2013 à 12:02
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 nov. 2013 à 22:30
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 14 nov. 2013 à 22:30
A voir également:
- Invalid conversion from char to const char*
- Qwerty to azerty - Guide
- Win setup from usb - Télécharger - Utilitaires
- Video to video - Télécharger - Conversion & Codecs
- Conversion bytes en mo ✓ - Forum Webmastering
- Majuscule to minuscule - Guide
2 réponses
[Dal]
Messages postés
6204
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
27 février 2025
1 101
Modifié par [Dal] le 14/11/2013 à 14:00
Modifié par [Dal] le 14/11/2013 à 14:00
Bonjour pierref17,
Le prototype de "TTF_RenderText_Blended" est, selon la documentation :
Donc le 2ème argument doit être un pointeur sur char qui toit pointer vers une chaîne C (un ou plusieurs char terminés par '\0').
Or, tu passes un char, en passant
Pour résoudre ton problème, il te suffit de créer une chaîne C pouvant contenir ton caractère (et le caractère '\0' terminant la chaîne) et d'y mettre le caractère aléatoire que tu veux passer.
Quelque chose dans ce goût là :
Dal
Le prototype de "TTF_RenderText_Blended" est, selon la documentation :
3.4.9 TTF_RenderText_Blended
SDL_Surface *TTF_RenderText_Blended(TTF_Font *font, const char *text, SDL_Color fg)
font
Font to render the text with. A NULL pointer is not checked.
text
The LATIN1 null terminated string to render.
fg
The color to render the text in. Pixels are blended between transparent and this color to draw the sntialiased glyphs.
Donc le 2ème argument doit être un pointeur sur char qui toit pointer vers une chaîne C (un ou plusieurs char terminés par '\0').
Or, tu passes un char, en passant
alphabet[rand()%26].
Pour résoudre ton problème, il te suffit de créer une chaîne C pouvant contenir ton caractère (et le caractère '\0' terminant la chaîne) et d'y mettre le caractère aléatoire que tu veux passer.
Quelque chose dans ce goût là :
/* les chaînes sont dimensionnées pour accueillir le nombre
* de caractères attendu et, en plus, le caractère de fin
* de chaîne '\0'
*/
/* pour les 26 lettres de l'alphabet */
char alphabet[27] = "abcdefghijklmnopqrstuvwxyz";
/* pour une chaîne d'un caractère */
char st_lettre[2];
/* terminer la chaîne */
st_lettre[1] = '\0';
/* y mettre une lettre au hasard */
st_lettre[0] = alphabet[rand()%26];
/* passer cela a la fonction attendant une chaîne */
texte = TTF_RenderText_Blended(police, st_lettre, blanc);
Dal
pierref17
Messages postés
6
Date d'inscription
mercredi 18 novembre 2009
Statut
Membre
Dernière intervention
14 novembre 2013
14 nov. 2013 à 16:53
14 nov. 2013 à 16:53
Merci beaucoup pour ton aide Dal ! ça marche impeccable !
Maudit \0 !
Je trouve ça quand fou de devoir créer une variable avec le caractère de fin de chaîne.
Maudit \0 !
Je trouve ça quand fou de devoir créer une variable avec le caractère de fin de chaîne.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
14 nov. 2013 à 22:30
14 nov. 2013 à 22:30
Il n'y a pas de variable de type chaîne de caractères en C. On est obligé de passer par un pointeur sur char ou un tableau de char. Bref il s'agit d'une succession de caractères. Il faut donc bel et bien définir une fin. Et oui, le C est un langage ancien :-).
14 nov. 2013 à 14:00
Dal