CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Problème avec args......

inapercu
inapercu
Niveau 3
05 décembre 2005 à 21:09:33

Alors,alors,j´ai un soucis avec "args". Tout d´abord, je n´ai aucune idée de ce que représente "args", "argc" ou encore "argv", donc si quelqu´un peut me donner une idée de ce que c´est ce serait bien cool.
Mais le plus gros problème n´est pas la, j´ai une fonction qui devrait me permettre d´afficher du texte sous SDL et elle utilise "args".
Le probleme c´est que DevC++ me dit < `va_start´ used in function with fixed args >.Voila, je ne trouve aucune information sur "args", aidez moi s´il vous plait ;- )
ma fonction :

void PrintSDL(SDL_Surface* font,SDL_Surface* dest,int x,int y,char* text)
{
char buf[500];
int i;
int inx,iny;
int w,h;
va_list args;
va_start(args,text);
vsprintf(buf,text,args);
va_end(args);
w = font->w/16;
h = font->h/14;
for(i=0;i<(int)strlen(buf);i++)
{
inx=w*((unsigned char)(buf[i])%16);
iny=h*((unsigned char)(buf[i])/16-2);
if (iny-h>font->h)
return;
Blit(font,inx,iny,inx+w,iny+h,dest,x,y);
x+=w;
}
}

et Blit, la voici si elle peut vous etre utile :

void Blit(SDL_Surface* source,int x1,int y1,int x2,int y2,SDL_Surface* dest,int x3,int y3)
{
SDL_Rect S=Rect(x1,y1,x2-x1+1,y2-y1+1);
SDL_Rect D=Rect(x3,y3,0,0);
SDL_Rect* pS=&S;
if (x1<0)
pS=NULL;
SDL_BlitSurface(source,pS,dest,&D);
}

voila, voila, et merci à celui qui pourra m´aider.

inaperçut

dnob700
dnob700
Niveau 10
05 décembre 2005 à 21:22:24

tout d´abord, dans la fonction main les argument argc et argv sont les arguments qui sont passé au programme par la ligne de commande :

int argc; c´est le nombre d´arguments et
char** argv; c´est un tableau de chaines da caractères qui contient argc chaines qui sont les argc arguments.

Pour ton problème, c´est que la fonction attend un nombre variables d´arguments.
Je ne sais pas trop comment ça s´utilise, mais essaye de remplacer la déclaraction de la fonctin :
void PrintSDL(SDL_Surface* font,SDL_Surface* dest,int x,int y,char* text)

par :
void PrintSDL(SDL_Surface* font,SDL_Surface* dest,int x,int y,char* text,...)
Mais je n´en suis pas sur du tout.

JeanYvesYves
JeanYvesYves
Niveau 10
06 décembre 2005 à 13:27:54

je reconnais ma fonction printSDL :)

n´oublie pas, comme dit Dnob, de la prototyper avec les ... a la fin.

N´oublie pas d´inclure stdarg.h

inapercu
inapercu
Niveau 3
06 décembre 2005 à 18:07:47

Effectivement JeanYvesYves, c´ets bin ta fonction PrintSDL, je pensai que les petits points étaient la pour dire qu´on pouvait ajouter d´autres paramètres.
Ca fonctionne avec les petits points.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment