[C] comment attribuer un nombre à un int ... [résolu]

comment attribuer un nombre à un int ... [résolu] [C] - C++ - Programmation

Marsh Posté le 08-11-2002 à 14:34:57    

... lorsque le-dit int provient d'un tableau de char ???
 
J'explique.
 
J'ai un fichier à analyser, lequel contient n lignes, chaque ligne contenant des caractères alphanumériques
 
Comme solution à 1ère vue, soit je scanne chaque ligne, caractère par caractère, soit je charge toutes les lignes dans un tableau de char à 2 dimensions mais j'suis pas un pro du C (z'aviez deviné, hein), si j'ai cette ligne là :
 

Code :
  1. akfkjgfjhgfj12dsfkjsdfkjlfj


 
comment puis-je récupérer le 12 qui est noyé en plein milieu pour l'affecter à un short int ???
 
désolé si la question paraît conne, je viens du Perl et en Perl, je sais faire, PAS en C


Message édité par Aricoh le 08-11-2002 à 15:33:16

---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 08-11-2002 à 14:34:57   

Reply

Marsh Posté le 08-11-2002 à 14:40:20    

ben tu embarques l'interpreteur perl dans ton programme en C :D
 
[jesors]

Reply

Marsh Posté le 08-11-2002 à 14:44:22    

lorill a écrit a écrit :

ben tu embarques l'interpreteur perl dans ton programme en C :D
[jesors]



A la base, mon prog est censé s'écrire en Perl mais, comme il est destiné à la fois à des users Linux et Windows, le source ne suffira pas. De plus, je ne crois pas que, légalement, je puisse proposer aux users Windows un exe créé via Perl2Exe si je n'ai pas la license de Perl2Exe.
 
Du coup, je fais en C mais c'est là que mes RegExp me font cruellement défaut  :lol:


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 08-11-2002 à 14:48:29    

ah, mais donc en fait ma connerie n'est pas si conne !
je connais pas Perl2Exe, c'est pas libre ? dommage...
 
sinon je connais pas vraiment perl, mais la plupart des interpreteurs peuvent etre integré a un programme C et utilisés dans le programme.  
 
a la limite rien t'empeche de faire des scripts perls qui vont etre executés par ton programme C.

Reply

Marsh Posté le 08-11-2002 à 14:49:34    

tu peux peut etre trouvé des trucs pour utiliser les expressions régulières en C...
 
http://www.linuxgazette.com/issue55/tindale.html
 

Reply

Marsh Posté le 08-11-2002 à 14:52:18    

Embed Perl in your projects
 
cela dit, ca n'est pas la meilleure solution pour recuperer le 12 au milieu de la chaine, mais vu que t'es un perl addict, ca peut toujours servir.

Reply

Marsh Posté le 08-11-2002 à 14:52:27    

lorill a écrit a écrit :

ah, mais donc en fait ma connerie n'est pas si conne !
je connais pas Perl2Exe, c'est pas libre ? dommage...



 
Perl2Exe est un shareware, j'ai une version d'évaluation qui génère un Exe mais y a un message en fin de programme qui s'affiche dans la fenêtre Dos, comme quoi le prog a été généré par une version d'éval et qu'il ne doit en aucun cas être distribué.
 
Autre pb avec Perl2Exe, l'exe constitué fait facilement 1 Mo en taille car il intègre certaines dll de la distribution Perl + les librairies dont mon prog aurait besoin, donc pas good.
 

lorill a écrit a écrit :

a la limite rien t'empeche de faire des scripts perls qui vont etre executés par ton programme C.



 
Oui mais faut que les gens aient Perl, ce dont je dois éviter. Télécharger Perl = download d'environ 30 Mo, la majorité des users est en RTC ...


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 08-11-2002 à 15:06:04    

tu peux programmer un parser assez simple ... pour chacune de tes lignes tu parcoures les caracteres, si tu rencontres un chiffre , tu stokes dans un buffer temporaire ce chiffre et tout ceux directement apres et ensuite su fait un atoi de ton buffer temporaire  pour obtenir un int

Reply

Marsh Posté le 08-11-2002 à 15:17:15    

xilebo a écrit a écrit :

tu peux programmer un parser assez simple ... pour chacune de tes lignes tu parcoures les caracteres, si tu rencontres un chiffre , tu stokes dans un buffer temporaire ce chiffre et tout ceux directement apres et ensuite su fait un atoi de ton buffer temporaire  pour obtenir un int



Ah ok, j'ignorais qu'avec un atoi(), je pouvais récupérer la string en int, merci  :jap: !
 
je venais de trouver une solution de brute  :D :
 
soit tablo un tableau de char ne contenant QUE mon exemple, donc 12 et que toto soit mon int récupérant le nombre à la fin :

Code :
  1. if ( (strlength(tablo)) == 2)
  2.     toto = tablo[0] * 10 + tablo[1]
  3. else
  4.     return -1; /* grosse cacade ! */


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 08-11-2002 à 15:19:02    

Aricoh a écrit a écrit :

Ah ok, j'ignorais qu'avec un atoi(), je pouvais récupérer la string en int, merci  :jap: !
 
je venais de trouver une solution de brute  :D :
 
soit tablo un tableau de char ne contenant QUE mon exemple, donc '1','2','\0' et que toto soit mon int récupérant le nombre à la fin :

Code :
  1. if ( (strlength(tablo)) == 3)
  2.     toto = tablo[0] * 10 + tablo[1];
  3. else
  4.     return -1; /* grosse cacade ! */






 
Edit : z'avions oublié que le '\0' compte comme élément dans un tableau (me trompe-je ?)


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Marsh Posté le 08-11-2002 à 15:19:02   

Reply

Marsh Posté le 08-11-2002 à 15:23:18    

Aricoh a écrit a écrit :

Ah ok, j'ignorais qu'avec un atoi(), je pouvais récupérer la string en int, merci  :jap: !
 
je venais de trouver une solution de brute  :D :
 
soit tablo un tableau de char ne contenant QUE mon exemple, donc 12 et que toto soit mon int récupérant le nombre à la fin :

Code :
  1. if ( (strlength(tablo)) == 2)
  2.     toto = tablo[0] * 10 + tablo[1]
  3. else
  4.     return -1; /* grosse cacade ! */






 
bah regarde le code d atoi , en gros c est ce qu il fait ..

Reply

Marsh Posté le 08-11-2002 à 15:31:32    

xilebo a écrit a écrit :

 
 
bah regarde le code d atoi , en gros c est ce qu il fait ..



ok ça roule, je suis sauvé, ouf !


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed