Chaine de caractere quelconque vers int en c

Résolu/Fermé
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 - 1 août 2008 à 13:15
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 - 1 août 2008 à 14:05
Bonjour,
Je code en c, je voudrais une fonction me transformant une chaine de caracteres quelconque en un int.

atoi n'est pas bonne,car elle ne traduit que les chaine de caractère ou les caracteres sont des chiffres.
Si vous avez une idée...........
A voir également:

8 réponses

Utilisateur anonyme
1 août 2008 à 13:20
Ca parait difficile ton truc.
En quel integer convertiras-tu "Bonjour" ??
0
el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
1 août 2008 à 13:21
Bonjour Eti38,

Je ne comprends pas bien votre requête.
Comment envisagez-vous qu'une chaîne de caractères quelconque puisse être transformée en int ?

Si je prends le mot "Camion": quel 'int' voulez-vous en tirer ? "Camion" n'est pas un nombre...

Merci d'éclairer ma lanterne !


Cordialement,
el_linwin
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
1 août 2008 à 13:28
Peut importe en verité:

Il me fallait faire correspondre a une chaine donnée un entier unique....

Mais c'est plus chaud qu'il n'y parais...

26 caractere(sans parler des / * - + . etc..)

cela donne sur N caractere :26puissanceN............
Rien que 7 caractere et cela ne rentre plus sur un int de 4 octet...........


Bref excusez moi je pense que je vais tenter autre chose pour résoudre mon prob....
0
el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
1 août 2008 à 13:34
Bonjour Eti38,

Dans ce cas, il suffit de déclarer un tableau de chaînes ainsi:
char liste_chaines[nombre_de_chaines][taille_maximum_de_chaine]

Note: nombre_de_chaines et taille_maximum_de_chaine sont des constantes.
Ensuite, pour chaque chaîne de caractères, vous vérifiez si elle est dans le tableau.
Si oui, son numéro sera l'indice dans le tableau.
Si non, elle est ajoutée. Son indice sera la "ligne" du tableau dans laquelle elle aura été stockée.


Cordialement,
el_linwin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
1 août 2008 à 13:45
Je comprend ce que tu écrit,
mais ce qui ne correspond pas , c'est que j'ignore quelle va être la chaine de caractere:
il faut donc que N'IMPORTE quel chaine puisse être codée sur un int.

On a vu qu'a partir de 7 caracteres on ne peut faire correspondre a une unique chaine un unique int:
C'est donc mathématiquement impossible....

Je crois ne pas avoir dit trop de betises..
0
Bonjour

/!\ Ne pas oublier que chaque caractère est représentable par un nombre !

'integer' ou 'int' : Longueur de 4 octets, stocke les nombres de -2 147 483 648 à 2 147 483 647.

Recherche de 'string vers int entier' avec Google :
https://www.google.fr/search?hl=fr&q=string+vers+int+entier&gws_rd=ssl

Exemple : Sujet : Passage d'un string vers un int.... ou comment savoir si c possible
https://forum.hardware.fr/hfr/Programmation/Java/passage-comment-possible-sujet_91682_1.htm

Merci à tous et pour le retour d'information (donnes la solution choisie et expliques)
0
el_linwin Messages postés 519 Date d'inscription vendredi 25 juillet 2008 Statut Membre Dernière intervention 16 août 2008 90
1 août 2008 à 13:54
Bonjour Eti38,

Si vous ne savez pas de quelle taille seront les chaînes, cette écriture est possible:
char liste_chaines[nombre_de_chaines][];

Ensuite, pour chaque chaînes, l'allocation se fera ainsi:
liste_chaines[indice]=(char *)malloc(sizeof(la_chaine));

Enfin, concernant la remarque: "On a vu qu'a partir de 7 caracteres on ne peut faire correspondre a une unique chaine un unique int: C'est donc mathématiquement impossible....", la mémoire de votre ordinateur n'est pas infinie non plus...

Pour atteindre le maximum, utilisez un 'unsigned long' pour l'indice: l'échelle va de 0 à +4294967295.
A ce niveau, seule la mémoire peut faire défaut !


Cordialement,
el_linwin
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
1 août 2008 à 14:05
Je pense que el_liwin a raison je vais faire quelquechose dans ce gout la.
merci beaucoup d'avoir pris le temp!!
0