Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1898 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Récupérer un nombre dans un char en c

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Récupérer un nombre dans un char en c

n°1819103
dyroj
Posté le 29-11-2008 à 16:08:59  profilanswer
 

Bonjour,  
je suis en train de créer un client/serveur en c sous windows xp et je voudrais que le client entre de numéro de port dans argv[].  
g reussi a recuperer l'ip mais le port sa marche pas.  
voila un le bout de code coserné:  
 
//*********************************************************  
int main(int argc, char **argv)  
{  
const char *ip;  
int i;  
int port;  
 
for(i = 0; i < argc; i++)  
{  
 
if(strcmp(argv[i],"-ip" )==0)  
{  
 
ip = argv[i + 1];  
 
}  
 
if(strcmp(argv[i],"-port" )==0)  
{  
 
port = argv[i + 1];  
 
}  
}  
}  
 
//*************************************************  
 
je c'est que c'est normale que sa marche pas mais auriez vous une idée pour convertire un char en int.  
exmple :  
char *port_char;  
int port_int = port_char;  
 
merci davance pour vos reponce a ++.

mood
Publicité
Posté le 29-11-2008 à 16:08:59  profilanswer
 

n°1819149
Elmoricq
Modérateur
Posté le 29-11-2008 à 17:23:09  profilanswer
 

strtol

n°1828425
Mxtrem
Posté le 17-12-2008 à 12:15:37  profilanswer
 

int convert(char *s)
{
  int i = 0, n = 0, signe = 0;
  while (s[i] == ' ' || s[i] == '\n' || s[i] == '\t')
     i += 1;
  signe = 1;
  if (s[i] == '+' || s[i] == '-')
     signe = (s[i++] == '+') ? 1 : -1;
  while (s[i] >= '0' && s[i] <= '9')
    {
      n = 10 * n + s[i] - '0';
      i++;
    }
 return (signe * n);  
}


Message édité par Mxtrem le 17-12-2008 à 12:21:25
n°1828429
Taz
bisounours-codeur
Posté le 17-12-2008 à 12:17:10  profilanswer
 

i n'est pas initialisé
 
génial ton code pourri.

n°1828431
Mxtrem
Posté le 17-12-2008 à 12:18:47  profilanswer
 

Taz a écrit :

i n'est pas initialisé
 
génial ton code pourri.


 
 
i n'est pas initialisé ? Hum, achète des yeux ?
Oups edit, en effet ça risque de mieux marcher maintenant.
Sinon je ne vois pas en quoi le code est pourri... Tu peux faire mieux ?

Message cité 1 fois
Message édité par Mxtrem le 17-12-2008 à 12:22:03
n°1828438
Taz
bisounours-codeur
Posté le 17-12-2008 à 12:27:14  profilanswer
 

Mxtrem a écrit :


 
 
i n'est pas initialisé ? Hum, achète des yeux ?
Oups edit, en effet ça risque de mieux marcher maintenant.
Sinon je ne vois pas en quoi le code est pourri... Tu peux faire mieux ?


Message édité par Mxtrem le 17-12-2008 à 12:21:25
 
parce que c'est du NIH même pas testé. C'est vraiment de l'enculage de mouche de vouloir pisser du code NIH. Ca fait 30ans qu'on a des trucs à réutiliser, mais non, NIH.
thedailyWTF a encore de beaux siècles devant lui.

n°1828499
Mxtrem
Posté le 17-12-2008 à 14:35:27  profilanswer
 

Taz a écrit :


Message édité par Mxtrem le 17-12-2008 à 12:21:25
 
parce que c'est du NIH même pas testé. C'est vraiment de l'enculage de mouche de vouloir pisser du code NIH. Ca fait 30ans qu'on a des trucs à réutiliser, mais non, NIH.
thedailyWTF a encore de beaux siècles devant lui.


 
Cool t'as pas l'air aigri comme mec :ouch:  
Déjà je ne sais pas ce que veulent dire NIH et thedailyWTF, secondo, je lui ai codé ça à la va-vite sans tester.
Finalement, je viens de tester, ça marche, ça lui montre de conversion d'un char en int. Putain, c'est cool de vouloir rendre service... on se fait insulter.

n°1828651
Sve@r
Posté le 17-12-2008 à 16:52:06  profilanswer
 

dyroj a écrit :

Bonjour,  
je suis en train de créer un client/serveur en c sous windows xp et je voudrais que le client entre de numéro de port dans argv[].  
g reussi a recuperer l'ip mais le port sa marche pas.  
voila un le bout de code coserné:  
 
//*********************************************************  
int main(int argc, char **argv)  
{  
const char *ip;  
int i;  
int port;  
 
for(i = 0; i < argc; i++)  
{  
 
if(strcmp(argv[i],"-ip" )==0)  
{  
 
ip = argv[i + 1];  
 
}  
 
if(strcmp(argv[i],"-port" )==0)  
{  
 
port = argv[i + 1];  
 
}  
}  
}  
 
//*************************************************  
 
je c'est que c'est normale que sa marche pas mais auriez vous une idée pour convertire un char en int.  
exmple :  
char *port_char;  
int port_int = port_char;  
 
merci davance pour vos reponce a ++.


 
Déjà pour gérer les options "-port" ou "-ip", tu peux utiliser getopts. Ca gère le cas
-x
-y
-xy
 
et aussi les options avec valeur style
-x12 -y15
 
Mais les conventions demandent qu'une option longue soit précédée d'un double tiret "--port" par exemple
 
Ensuite, pour convertir une chaine style "123" en nombre 123, tu peux utiliser des outils déjà existants style strtoul ou te faire ton propre outils
val=0
pour i balayant la chaine
faire
    val=val * 10 + code ascii de i - code ascii '0'
fin faire
Mais c'est mieux d'utiliser des outils déjà existants
 
De plus si le nombre entré est le n° de port, tu devras le convertir via htons avant de t'en servir sinon ton serveur risque de ne pas communiquer du tout.  
Et enfin c'est bizarre un client serveur avec un port entré par l'utilisateur car tu risques de créer des collisions avec des appli utilisant déjà le n° entré (imagine que ton utilisateur choisisse 21 ou 23  :bounce: ) mais c'est toi que ça regarde...
 
 

Mxtrem a écrit :


 
Cool t'as pas l'air aigri comme mec :ouch:  
Déjà je ne sais pas ce que veulent dire NIH et thedailyWTF, secondo, je lui ai codé ça à la va-vite sans tester.
Finalement, je viens de tester, ça marche, ça lui montre de conversion d'un char en int. Putain, c'est cool de vouloir rendre service... on se fait insulter.


Bah faut t'y faire. Taz est extrèmement brillant (ou du moins il semble l'être) mais il n'a jamais su et ne saura jamais se mettre au niveau de ses interlocuteurs. Ca fait plusieurs années qu'il sévit ici et on fait avec...


Message édité par Sve@r le 17-12-2008 à 16:54:51

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1828655
ptitchep
Posté le 17-12-2008 à 16:58:11  profilanswer
 

Taz a écrit :


génial ton code pourri.


Traduction pour Mxtrem:
Tu proposes un code bancal pour quelque chose qui existe déjà.
exemple que donne ton code si s==NULL?


---------------
deluser --remove-home ptitchep
n°1828746
Elmoricq
Modérateur
Posté le 17-12-2008 à 20:00:58  profilanswer
 

Mxtrem a écrit :


Cool t'as pas l'air aigri comme mec :ouch:  
Déjà je ne sais pas ce que veulent dire NIH et thedailyWTF, secondo, je lui ai codé ça à la va-vite sans tester.
Finalement, je viens de tester, ça marche, ça lui montre de conversion d'un char en int. Putain, c'est cool de vouloir rendre service... on se fait insulter.


 
Tu rends pas service du tout, puisque la réponse avait déjà été donnée et que ton code est pourri.
 
Pour rappel, la réponse était : strtol

mood
Publicité
Posté le 17-12-2008 à 20:00:58  profilanswer
 

n°1828788
Mxtrem
Posté le 17-12-2008 à 23:53:52  profilanswer
 

Elmoricq a écrit :


 
Tu rends pas service du tout, puisque la réponse avait déjà été donnée et que ton code est pourri.
 
Pour rappel, la réponse était : strtol


 
Mon code est pourri mais à le mérite (une fois de plus) de fonctionner.
Il n'est certainement pas à la hauteur des fonctions de la lib c mais permet de comprendre le mécanisme de conversion d'un char en int, rien de plus.
Je suis certain qu'il y en a beaucoup qui connaissent le fonctionnement de strtol mais qui s'avèreraient par exemple incapable de réaliser une petite fonction qui converti un nombre en n'importe quelle base...
Enfin bref, on ne va pas polémiquer, vous êtes les meilleurs :o Utilisez ce que vous savez mais ne réflechissez pas, c'est tellement plus simple.

n°1828792
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2008 à 00:05:05  profilanswer
 

Mxtrem a écrit :

Utilisez ce que vous savez mais ne réflechissez pas, c'est tellement plus simple.


T'as pas l'air de réfléchir beaucoup non plus vu le code que tu ponds et la manière dont tu réagis à la critique :(


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1828821
Anonymouse
Posté le 18-12-2008 à 02:02:08  profilanswer
 

masklinn a écrit :


T'as pas l'air de réfléchir beaucoup non plus vu le code que tu ponds et la manière dont tu réagis à la critique :(


 
En même temps vu le ton sur lequel la critique est formulée ...

Message cité 2 fois
Message édité par Anonymouse le 18-12-2008 à 02:11:38
n°1828834
ptitchep
Posté le 18-12-2008 à 08:20:39  profilanswer
 

Anonymouse a écrit :

 

En même temps vu le ton sur lequel la critique est formulée ...


Ce n'est pas faux.
Mais bon ça ressemble à une tradition ici. Cela dit, ce n'est pas pour ça qu'il faut prendre la mouche. Les gens qui critiquent comme cela n'hésiteront cependant pas à t'aider si besoin est. (vécu).

 


edit: un code pourri mais qui fonctionne reste un code pourri et est à bannir. La question n'était pas comment réaliser un algo qui convertit un char en int mais comment convertir un char en int. La réponse est strtol.

Message cité 1 fois
Message édité par ptitchep le 18-12-2008 à 08:26:39

---------------
deluser --remove-home ptitchep
n°1828858
Anonymouse
Posté le 18-12-2008 à 09:53:13  profilanswer
 

ptitchep a écrit :


Ce n'est pas faux.
Mais bon ça ressemble à une tradition ici. Cela dit, ce n'est pas pour ça qu'il faut prendre la mouche. Les gens qui critiquent comme cela n'hésiteront cependant pas à t'aider si besoin est. (vécu).
 
edit: un code pourri mais qui fonctionne reste un code pourri et est à bannir. La question n'était pas comment réaliser un algo qui convertit un char en int mais comment convertir un char en int. La réponse est strtol.


 
Non mis c'est une tradition sur HFr comme sur développez.  
 
Certains forumeurs, qui se considèrent comme gourous de la programmation, prennent un malin plaisir à casser la personne qui pose une question en étalant bien leurs connaissances sur un ton, parfois pédant, avant de donner la réponse. Autant donner la réponse et indiquer les différents points d'erreurs sans rabaisser la personne pour augmenter son propre égo.
 

n°1828925
ptitchep
Posté le 18-12-2008 à 11:46:25  profilanswer
 

La personne cassée n'est pas celle qui a posé la question mais celle qui veut y répondre alors qu'une réponse pertinente à déjà été donnée. Et vu la date du post, à mon avis, dyroj a déjà utilisé strtol.
En plus dire à quelqu'un que son code est pourri ne veut pas dire que l'on se prend pour un gourou. Même si évidemment ce n'est pas d'une politesse exemplaire.
En effet ajouter le pourquoi en dessous de "génial ton code pourri" ça serait bien.


---------------
deluser --remove-home ptitchep
n°1828943
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2008 à 12:38:26  profilanswer
 

Anonymouse a écrit :

En même temps vu le ton sur lequel la critique est formulée ...


Je me suis mangé des réponses de Taz quand je suis arrivé sur HFR, j'ai foutu ma fierté dans ma poche, j'ai ramassé mes dents et j'ai compris qu'il avait à peu près toujours raison [:spamafote]

Anonymouse a écrit :

Certains forumeurs, qui se considèrent comme gourous de la programmation, prennent un malin plaisir à casser la personne qui pose une question en étalant bien leurs connaissances sur un ton, parfois pédant, avant de donner la réponse. Autant donner la réponse et indiquer les différents points d'erreurs sans rabaisser la personne pour augmenter son propre égo.
 


En l'occurence Taz a fait exactement l'inverse là, il a d'abord formulé la critique constructive avant de donner un jugement de valeur sur la qualité du code [:dawa]

Message cité 1 fois
Message édité par masklinn le 18-12-2008 à 12:38:45

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1829207
Anonymouse
Posté le 18-12-2008 à 19:01:05  profilanswer
 

masklinn a écrit :


Je me suis mangé des réponses de Taz quand je suis arrivé sur HFR, j'ai foutu ma fierté dans ma poche, j'ai ramassé mes dents et j'ai compris qu'il avait à peu près toujours raison [:spamafote]  


 

masklinn a écrit :


En l'occurence Taz a fait exactement l'inverse là, il a d'abord formulé la critique constructive avant de donner un jugement de valeur sur la qualité du code [:dawa]


 

Taz a écrit :

i n'est pas initialisé  
génial ton code pourri.


 
Bah le jugement de valeur il pouvait le garder ou le formuler autrement.


Message édité par Anonymouse le 18-12-2008 à 19:01:30
n°1829209
Elmoricq
Modérateur
Posté le 18-12-2008 à 19:17:58  profilanswer
 

Mince, on n'a plus le droit de dire qu'un code est pourri ?
 
Désolé, mais ce n'est pas un jugement de valeur ici, c'est un avis objectif.

n°1829223
masklinn
í dag viðrar vel til loftárása
Posté le 18-12-2008 à 19:36:37  profilanswer
 

Elmoricq a écrit :

Désolé, mais ce n'est pas un jugement de valeur ici, c'est un avis objectif


Faux, on pourrait aussi dire que c'est pas mal pour un enfant de 8 ans, ou qu'il faut bien commencer quelque part après tout [:classe++]


Message édité par masklinn le 18-12-2008 à 19:39:31

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1829225
ptitchep
Posté le 18-12-2008 à 19:42:09  profilanswer
 

rooooooooooooo
c'est méchant
et gratuit
j'adore


---------------
deluser --remove-home ptitchep
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Récupérer un nombre dans un char en c

 

Sujets relatifs
ogmenter un nombre a chaque cliqueNombre max de champs dans une table
difference entre u_char et char[Bash Linux] nombre d'un caractère choisi
Comment récupérer des infos stockées dans un exe ?Récuperer sous Excel les mails Lotus Notes (.NSF) (expédit/sujet/date)
Récupérer extérieur noeudRecuperer variable d'un select multiple via javascript
Récupérer variable php d'un select multiplerecupérer filtre par selection pour filtrer un etat
Plus de sujets relatifs à : Récupérer un nombre dans un char en c


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR