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

[C]probleme conversion int char

Pwote
Pwote
Niveau 7
10 mai 2012 à 22:01:03

Voilà mon problème m'étant mis en tête de crée une calculatrice pour m'entraîner je suis tomber sur le problème de convertir des nombres en char vers une variable en int. Voici mon code :
http://pastebin.com/QDReEanP
Merci beaucoup à la communauté d'avance .

Pwote
Pwote
Niveau 7
10 mai 2012 à 22:04:03

Je me suis mal exprimer je pense , en faite mon programme calcule des nombres que le programme convertie (Par exemple je dis n'importe quoi mais 1 = 50 donc à la place de 1 je me retrouve avec un 50).

Adblock_Crack
Adblock_Crack
Niveau 6
10 mai 2012 à 22:11:24

Je sais pas si j'ai compris, mais avec un truc dans ce genre :

int c, x = 0;
c = getc(flot);
while ('0' <= c && c <= '9')
{
x = 10 * x + c - '0';
c = getc(flot);
}
if(c == EOF)
{
return -1;
}

?

Adblock_Crack
Adblock_Crack
Niveau 6
10 mai 2012 à 22:15:11

Je crois que je dis n'importe quoi là...

Adblock_Crack
Adblock_Crack
Niveau 6
10 mai 2012 à 22:18:03

http://c.developpez.com/faq/index.php?page=strings#STRINGS_numtostr

C'est déjà mieux.

Pwote
Pwote
Niveau 7
10 mai 2012 à 22:24:06

Merci beaucoup .

Pwote
Pwote
Niveau 7
11 mai 2012 à 16:21:42

Bon j'ai utiliser cette fameuse fonction mais apparemment je ne sait pas l'utiliser .ça donne ceci maintenant :
http://pastebin.com/aEJnnU8M

Adblock_Crack
Adblock_Crack
Niveau 6
11 mai 2012 à 17:49:14

Tu as du mal lire «Le deuxième paramètre contiendra après l'éxecution de la fonction l'adresse où la conversion de la chaîne de caractères s'est arrêtée. Si la chaîne a entièrement été traitée, ce paramètre pointe donc sur le caractère '\0' de fin de chaîne : »

Pourquoi alors mettre &nombre1 en deuxième paramètre ?

Aussi, tu ne récupère pas le nombre renvoyé par la fonction, regarde l'exemple qu'il y a dans le lien.

Pwote
Pwote
Niveau 7
11 mai 2012 à 18:31:17

Oui au départ j'avais
nombre1 = strtol(ligne[0], NULL, 10);
Je l'avait changer pour faire des test enfin bref.
mais ça ne marche pas non plus il me dis que la fonction strtol.
http://pastebin.com/DSX6bZiG

Adblock_Crack
Adblock_Crack
Niveau 6
11 mai 2012 à 18:38:15

Et c'est quoi le problème alors ?

Un message d'erreur ? Ou le programme plante ?

Pwote
Pwote
Niveau 7
11 mai 2012 à 18:39:15

minii.c:12:7: attention : passing argument 1 of ‘strtol’ makes pointer from integer without a cast [enabled by default]
/usr/include/stdlib.h:184:17: note: expected ‘const char * __restrict__’ but argument is of type ‘char’
minii.c:13:7: attention : passing argument 1 of ‘strtol’ makes pointer from integer without a cast [enabled by default]
/usr/include/stdlib.h:184:17: note: expected ‘const char * __restrict__’ but argument is of type ‘char’

Pwote
Pwote
Niveau 7
11 mai 2012 à 18:41:24

Je crois que c'est un problème de pointeur .

Adblock_Crack
Adblock_Crack
Niveau 6
11 mai 2012 à 18:45:00

Et sans le [0] pour voir ?

Adblock_Crack
Adblock_Crack
Niveau 6
11 mai 2012 à 18:48:00

Et après, regarde l'exemple là pour le reste http://www.cplusplus.com/reference/clibrary/cstdlib/strtol/

Pwote
Pwote
Niveau 7
11 mai 2012 à 18:51:00

Ok je vais essayez de me débrouiller.

Pwote
Pwote
Niveau 7
11 mai 2012 à 18:53:34

Sans le [0] le programme fonctionne mais m'écris n'importe quoi .

tbop2
tbop2
Niveau 10
11 mai 2012 à 19:18:45

Bien sûr qu'il fait n'importe quoi.

A ligne 12 tu demandes à la fonction strtol :

Transforme moi "1+9" en un nombre. Résultat ?

A ligne 13 tu demandes :

Transforme moi "1+9" en un nombre. Résultat ?

Ta façon de t'y prendre est mauvaise. En vérité ton problème est un peu plus compliqué que ça mais il ne gère même pas le cas de nombres supérieures à 9.

L'astuce c'est de parser le tableau en deux fois effectivement mais regarde un peu la documentation de strtol et l'exemple (a croire que tu preferes essayer beaucoup de choses au lieu de tout simplement lire la doc) ils t'expliquent à quoi sert le second argument de la fonction strtol que tu n'as jamais utilisé jusqu'à présent :)

Pwote
Pwote
Niveau 7
12 mai 2012 à 12:30:24

Effectivement j'arrive a faire fonctionner mais seulement les =< de 9.
J'ai relue le manuel et je comprends mieux à quoi sert le second paramètre .Je vais faire des petits essaie et je pense que je vais trouver .Merci encore les gens .

stargamer2
stargamer2
Niveau 9
12 mai 2012 à 12:53:28

Prototype de la fonction :
long int strtol (const char *nptr, char **endptr, int base);

nptr = chaine de caractère que tu veux transformer en int (par exempl "24533")
endptr = Si endptr n'est pas nul alors il devient le pointeur vers le premier caractère non valide. Exemple tu demandes à convertir 12343F3354 en base 10, strtol s'arrêtera à F et le mettrra dans endptr.
base = Base dans laquelle tu veux convertir ton char.

Dans ton cas, pour convertir une chaine str dans a, tu ferais : a = strtol(str,NULL,10).
Ou alors, tu peux mettre l'adresse d'un pointeur à la place de NULL. Si la conversion ne fonctionne pas, tu afficherais un message d'erreur avec le caractère qui a foiré.

Tout simplement.

tbop2
tbop2
Niveau 10
12 mai 2012 à 13:29:56

Non stargamer2 le deuxième pointeur n'implique pas forcément une erreur c'est réinterpréter la doc à ta sauce.
Et ici dans le cas présent ce pointeur serait même très pratique pour notre ami ! :)

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