[C] Convertir un tableau char en long
Sylvain Wells
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je travaille sur un petit jeu en C et j'ai besoin de créer un tableau de scores. J'arrive facilement à convertir le score (long) obtenu en char[] et à l'enregistrer dans un .txt, mais lorsque je veux récupérer les scores pour les classer je ne parviens pas à les reconvertir en long.
Quelqu'un aurait-il une idée pour y parvenir ?
Je travaille sur un petit jeu en C et j'ai besoin de créer un tableau de scores. J'arrive facilement à convertir le score (long) obtenu en char[] et à l'enregistrer dans un .txt, mais lorsque je veux récupérer les scores pour les classer je ne parviens pas à les reconvertir en long.
Quelqu'un aurait-il une idée pour y parvenir ?
A voir également:
- Char to long
- Pc long a demarrer - Guide
- Qwerty to azerty - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
5 réponses
Le langage C doit pouvoir convertir un long en chaine de caractère nativement, puisque tout nombre est aussi une chaine de caractère. par contre une chaine de caractère n'est pas forcément un nombre.
Par exemple : 1600 est un int, et peut se convertir simplement en char par '1600'.
Par contre convertir 'mille six cent' en long c'est impossible (enfin si, mais pas directement par le langage).
c'est donc normal que tu n'arrives pas à forcer la conversion.
Il faut donc que tu récupères les scores en long dans ton programme, que tu les stockes et que tu les ressortes après.
Par exemple : 1600 est un int, et peut se convertir simplement en char par '1600'.
Par contre convertir 'mille six cent' en long c'est impossible (enfin si, mais pas directement par le langage).
c'est donc normal que tu n'arrives pas à forcer la conversion.
Il faut donc que tu récupères les scores en long dans ton programme, que tu les stockes et que tu les ressortes après.
Salut,
Donne un exemple de ce que tu as en long et de ce que tu as dans ton tableau de char qu'on puisse être sûr de parler de la même chose.
Sinon pour convertir une chaîne en long, tu peux utiliser strtol (ou à la limite atol et sscanf, mais moins bien).
Cdlt
Donne un exemple de ce que tu as en long et de ce que tu as dans ton tableau de char qu'on puisse être sûr de parler de la même chose.
Sinon pour convertir une chaîne en long, tu peux utiliser strtol (ou à la limite atol et sscanf, mais moins bien).
Cdlt
Salut.
regarde du coté des fonctions scanf() (scanf, sscanf et fscanf) C'est une des meilleur méthode.
Sinon, il y a la fonction atoi() ou atol().
regarde du coté des fonctions scanf() (scanf, sscanf et fscanf) C'est une des meilleur méthode.
Sinon, il y a la fonction atoi() ou atol().
Par exemple :
J'ai un long égal à 12. Pour le stocker, je le convertit en chaîne de caractères pour l'enregistrer ; dans mon .txt, il y a donc écrit 12. mais comme c'est une chaîne de caractères, je ne peux pas la convertir en long, car 12 n'est plus une valeur mais un "mot", en quelque sorte.
L'idéal serait bien sûr de stocker mon long en tant que long, mais je ne vois pas comment faire...
J'ai un long égal à 12. Pour le stocker, je le convertit en chaîne de caractères pour l'enregistrer ; dans mon .txt, il y a donc écrit 12. mais comme c'est une chaîne de caractères, je ne peux pas la convertir en long, car 12 n'est plus une valeur mais un "mot", en quelque sorte.
L'idéal serait bien sûr de stocker mon long en tant que long, mais je ne vois pas comment faire...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut.
Fiddy se répète (il est gentil), les solutions ont été donné, rien à dire de plus.
Pour enregistrer un entier directement, il faut déjà savoir ce qu'il y a d'autre dans ton fichier.
s'il n'y a que des entiers, enregistrés de façon séquentielle toujours identique, tu peux alors utiliser l'écriture dans un fichier au format binaire.
Si ma mémoire est bonne :
Fiddy se répète (il est gentil), les solutions ont été donné, rien à dire de plus.
Pour enregistrer un entier directement, il faut déjà savoir ce qu'il y a d'autre dans ton fichier.
s'il n'y a que des entiers, enregistrés de façon séquentielle toujours identique, tu peux alors utiliser l'écriture dans un fichier au format binaire.
Si ma mémoire est bonne :
int f=open("toto.bin",O_WRONLY); long l; ... write(f,&l,sizeof(l));Et pour lire
int f=open("toto.bin",O_RDONLY); long l; read(f,&l,sizeof(l));
tout nombre est aussi une chaine de caractère. par contre une chaine de caractère n'est pas forcément un nombre.
Euh non. Ce sont deux éléments qui n'ont strictement rien à voir. L'un est un long, l'autre est un tableau de char...
Dans le sens ou char '12' fonctionne alors que long 'douze' ne fonctionne pas.. Bref Passons, le but est quand même de donner une solution à la question posé tout en expliquant pourquoi cela ne fonctionne pas.
La chaîne de caractères "12" n'a aucun lien (ni de près ni de loin) avec le nombre 12.
e but est quand même de donner une solution à la question posé tout en expliquant pourquoi cela ne fonctionne pas
Oui je suis d'accord. Mais à condition de donner les bonnes explications ^^. Pour la solution, les postes #3 et #4 sont là (strtol, atol, etc).