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
12 mai 2012 à 14:00:04

Donc si je comprends bien si je fais:
nombre1 = strtol(ligne, &pEnd, 10);
et que je rentre mon dans mon scanf (Donc dans ligne) :
23+45 alors pEnd pointera vers + .
Pour l'instant j'en suis là si vous voulez voir l’avancement de mon code :
http://pastebin.com/DCPheFqY

Pwote
Pwote
Niveau 7
12 mai 2012 à 14:07:56

Je précise juste que le code est loin d'être fini (Je sais bien que le deuxiéme strtol n'est pas au bonne endroit) .

tbop2
tbop2
Niveau 10
12 mai 2012 à 14:35:51

C'est exact Pwote tu as bien compris :)

Sinon.
C'est moche les initialisations à la chaine tu sais ? On préfère bien distinguer chaque variable ligne par ligne. Cela dit bon nombre de tes variables ne sont d'ailleurs jamais utilisées dans ton code... pourquoi donc les créer ?

Pour les noms de variables il faudrait se décider aussi : français ou anglais ? Généralement la question ne se pose même pas, on code toujours en anglais même les commentaires, ça permet d'avoir un code compréhensible par le monde entier quand il s'agit de poster sur les forums.

Tu n'es plus très loin de la solution de toute façon :ok:

Pwote
Pwote
Niveau 7
12 mai 2012 à 19:57:44

Bon pour l'instant j'ai ça :
http://pastebin.com/Va9CjXL7
Le message d'erreur :
minii.c:18:7: attention : passing argument 2 of ‘strcpy’ makes pointer from integer without a cast [enabled by default]
/usr/include/string.h:128:14: note: expected ‘const char * __restrict__’ but argument is of type ‘char’
Donc pointeur je crois

Pwote
Pwote
Niveau 7
13 mai 2012 à 11:47:09

J'ai fait un test en enlevant l'astérix à pEnd1 à la ligne 18 .
Logiquement je crois que ça dois comparé à l’adresse mais j'obtiens des résultat très anormales :
23+42
= -1216591129
45-2
= 3
3+4
= 1
34+34
= 38
34+34
= 68
56+2
= 90

Vous voyez 34+34 ça donne bien 68 donc je pense que c'est juste un coup de chance .

Pwote
Pwote
Niveau 7
13 mai 2012 à 11:49:55

Désolé du double poste mais je viens de me rendre compte d'un truc .Si je tape deux fois le calcul le résultat est juste :
56+2
= 90
34+34
= 36
34+34
= 68
34+34
= 68
34+34
= 68
56+34
= 90
65+10
= 99
65+10
= 75
45+5
= 55
45+5
= 50

Décidément très étrange .

Adblock_Crack
Adblock_Crack
Niveau 6
13 mai 2012 à 12:14:21

56+2
= 90
34+34
= 36

Étrange, 34 + 2 ça fait bien 36.

56+34
= 90
65+10
= 99

65 + 34 ça fait bien 99.

65+10
= 75
45+5
= 55

45 + 10 ça fait aussi bien 55.

stargamer2
stargamer2
Niveau 9
14 mai 2012 à 01:35:54

Je réinterpête la doc à ma sauce? T'es vraiment sérieux quand tu me dis ça?

C'est toi qui réinterprète ce que je dis. J'ai repris au mot prêt la documentation man de strtol et j'ai jamais parlé d'erreur ou d'implication d'erreur mais bien de caractère non valide.

Allez tiens :
http://linux.die.net/man/3/strtol

stargamer2
stargamer2
Niveau 9
14 mai 2012 à 01:58:57

Euh j'ai énormement de mal à comprendre ton code.
Avec strtol, tu récupère donc number1 et l'opérande que tu stocke dans pEnd1.

Mais number2 n'est à aucun moment initialisé à une valeur. Il prend la valeur que lui donnera aléatoirement ta machine.

En gros tu additionnes number1, que tu as renseigné, à number2 non renseigné.
Mais le plus étrange est à venir. Tu récupères l'opérande et tu demandes à strtol de le convertir en long int? O_o

Ce que tu cherches à faire est plus compliqué que ce que tu ne penses.
Ce qu'il faut faire est récupéré la position dans ta chaîne de l'opérande(l'opérande c'est le symbole +, - etc) puis extraire la sous chaîne qui représente ton number2 en prenant comme point de départ la position de l'opérande et comme point d'arriver la fin de ta chaine (Il faudra écrire cette fonction d'extraction et ce n'est pas vraiment facile, tu peux t'inspirer de ce tuto : http://nicolasj.developpeppez.com/articles/libc/string/ en III]-c)

Une fois number2 contenu dans une chaîne de caractère, tu le convertis en int et tu l'ajoutes à number1.

Et ça c'est uniquement si tu considères faire des opérations simple.
Tu auras beaucoup plus de mal à développer une calculatrice qui effectue une opération plus complexe (avec gestion des priorités par exemple), il te faudra impérativement passer par l'élaboration d'un arbre d’exécution. Chose qui n'est pas évident à concevoir quand on débute.

Pwote
Pwote
Niveau 7
14 mai 2012 à 13:07:50

Merci de tes précieux conseils .
Je pense que je cherche trop à amélioré ma calculatrice alors que je n'ai pas le niveau ,je vais m’arrêter à des calcules simples .Merci pour toute l'aide que vous m'avez fournies .

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