begin process at 2012 05 29 03:29:39
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Gestion des long int


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Gestion des long int

lundi 16 novembre 2009 à 11:54:02 | Gestion des long int

kiira31

Bonjour,

Je code en ce moment la fonction printf. Je suis en train de gerer l affichage d'un nombre mais
j'ai un souci pour gerer les long.

Voici mon code:

#include <stdarg.h>

int sous_func(va_list ap)
{
int i;
int nb_num;
int nb;

i = 0;
nb = 0;
while (i < nb_num)
{
nb = va_arg(ap, int);
if (nb == 0)
return (0);
my_putnbr(nb);
i++;
}
}

int my_printf_num(int nb_num, ...)
{
va_list ap;

va_start(ap, nb_num);
sous_func(ap);
va_end(ap);
}

int main()
{
my_printf_num(1, 737892873, 0);
}

Pourriez vous m'expliquer comment gerer les long
mercredi 18 novembre 2009 à 14:33:53 | Re : Gestion des long int

rt15

Membre Club Administrateur CodeS-SourceS
Bienvenue,

Déjà, une remarque générale : tu as des fonctions qui sont supposées renvoyer des entiers qui ne le font pas ou uniquement dans certains cas.

Deuxième remarque, tu disposes d'une balise "code" sur ce forum (Troisième icône en partant de la gauche en haut de la zone où taper le texte), qui te permet de poster du code sans perdre l'indentation.

Troisième remarque, tu as un souci avec nb_num. Dans ton test :
Code C/C++ :
while (i < nb_num)

nb_num est une variable locale et n'a pas été initialisée. Il faudrait plutôt que tu passes cette variable en argument.

Quatrième : quelle taille font les longs avec ton compilo/OS ?

Voilà un code gcc/windows qui permet de passer du 32 au 64 bits facilement.

Code C/C++ :
#include <windows.h>
#include <stdio.h>
#include <stdarg.h>

/* Commenter la ligne suivante pour passer en 32 bits */
#define USE_64

#ifdef USE_64
#define ARG_TYPE long long
#else
#define ARG_TYPE int
#endif

void my_putnbr(ARG_TYPE nb)
{
#ifdef USE_64
  char lpBuffer[1024];

  /* Sur un autre OS ou avec d'autres compilateur, essayer printf("%lld", nb) */
  wsprintf(lpBuffer, "%I64d", nb);
  puts(lpBuffer);
#else
  printf("%d\n", nb); 
#endif
}

void sous_func(va_list ap,int nb_num)
{
  int i;
  ARG_TYPE nb;

  for (i = 0; i < nb_num; i++)
  {
    nb = va_arg(ap, ARG_TYPE);
    my_putnbr(nb);
  }
}

void my_printf_num(int nb_num, ...)
{
  va_list ap;

  va_start(ap, nb_num);
  sous_func(ap, nb_num);
  va_end(ap);
}

int main()
{
#ifdef USE_64
  my_printf_num(2, (ARG_TYPE)6000111222LL, (ARG_TYPE)1);
#else
  my_printf_num(2, (ARG_TYPE)2000111222, (ARG_TYPE)1);
#endif

  return 0;
} 



Cette discussion est classée dans : long, int, num, nb, ap


Répondre à ce message

Sujets en rapport avec ce message

Concaténation int et Cstring [ par maghella ] Salut!Je voudrais concanténer un chiffre et une lettre.Ex: mot="A";Nb=1;mot est de type CString et nb de type int.Je voudrais ke ça donne dans mot: A1 type de variable? long int ? [ par dleewax ] salut! je suis nouveau dans le C++ et j'ai un petit problème... je suis en train de faire un petit programme permettant de calculer les factorielles.. PB poilu de Stack 0verFlow (c++) [ par toufleboss ] Ci joint un algo de détourage d'un bmp de qq lignes :Le Binze c'est que des que la zone a détourée est trop importante je me tape un Stack overflow (l probleme avec printf(%d) [ par jeani763 ] Mon probleme est assez compliqué :Je voudrais que mon programme compte le nombre de lettres que je lui donne ce qui ce fait grace a la fonction cin ; conversion constante en hexa ->unsigned long ou int ??? [ par andrealphus ] 4ndr&@lphu$rebonjour à tous et toutes,mon nouveau probleme est ridicule mais gênant...comment peut on convertir un nombre hexadécimal (du style l'adre Traduire long int en tableau de caracteres [ par Shyron ] Salut,Je cherche comment traduire un long int en un tableau de caracteres de même taille que le nombre de chiffres du long int en C++. compatibilité borland microsoft visual [ par swnnos ] Bonjour je dois réutiliser un fichier d'en tête fourni par le constructeur d'une platine d'usinage. Seulement ce fichier est compatible borland mais p celà n'enregistre pas [:(!],grrrr [ par oceane67 ] voilà, mon programme n'enregistre toujours pas, je ne sais pas pourquoi, surtout qu'il fait comme si c'etait le cas, je desepesere,voici mon programme interface de jeu [ par cafou ] sltest ce que qu'elqu'un peut me propose une interphase graphique et des animations au jeu en language c si dessousmerci d'avance#include#include#incl Fatal signal: Segmentation Fault (SDL Parachute Deployed) [ par broks ] Je ne comprends vraiment pas pourkoa ca ne marche pas...C'est surement un probleme au niveau de la fonction saisi puisque je plante lorsque je dois sa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales