Fonction plus ou moins basic

Résolu
nem02004
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007
- 5 févr. 2006 à 15:19
cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
- 7 févr. 2006 à 12:26
Voila je voudrais faire une fonction Test du genre:
Test(108.111.108); qui me retourneré "lol" (avec les CHR).
Donc je fait:

char Test(char* data) {
char Decode[1024];
int Chre;
char *Chr = strtok(data, ".");
Chre = atoi(Chr);
sprintf(Decode,"%s%c",Decode,Chr);
while (Chr) {
Chr = strtok(NULL, ".");
Chre = atoi(Chr);
sprintf(Decode,"%s%c",Decode,Chre);
}
return Decode;
}

Mais c po bon dutout lol, si vous pourriez m'aider ca serai sympa

6 réponses

cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
6 févr. 2006 à 13:08
Moi j'aurais fait comme ça



#include <stdio.h>

#include <stdlib.h>

#include <string.h>



void CutChr(char *in, char *out)

{

char *c = in;

char *ou = out;

char sz[16] = {0};

char *d = sz;



while(*c)

{

if(*c != '.')

*d++ = *c;

else

{

d -= strlen(sz);

*ou++ = (char)atoi(sz);

}

c++;

}

*ou++ = (char)atoi(sz);

*ou = 0;

}



int main()

{

char Out[16] = {0};

char sz[] = "108.111.108";

CutChr(sz, Out);

printf("%s\n", Out);

system("pause");

return 0;

}

if(!Meilleur("Joky")) return ERREUR;<
3
dark_naruto25
Messages postés
127
Date d'inscription
mardi 23 août 2005
Statut
Membre
Dernière intervention
9 mai 2011

5 févr. 2006 à 22:09
Je comprends pas trop ce que tu voudrais faire, et encore moins où est ton problème ! Soit un peu plus précis stp.
0
Galmiza
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
6 févr. 2006 à 00:54
Essaie un truc du style:

char result[32]='\0';
int size=0;

while(*data)
{
char* cpy=data;
while(*data && *data!='.');
*data=0;
result[size++]=(char)atoi(cpy);
}
0
nem02004
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007

6 févr. 2006 à 13:46
c super Jocker, mais pares reflexion jvient de penser a unt ruck genre:

char * replace(char *buf,...)
{
char *exps[200];
char *p;
int ep = -1;
va_list vp;
va_start(vp,buf);
char *result;
while(p = (char *)va_arg(vp, char *) )
{
exps[ep++] = p;
sprintf(result,"%s%c",result,p);
}
return result;
}


int main(int argc, char* argv[]) {
MessageBox(NULL,replace(0, 108,111,108, 0),NULL,0);
}

Comme ca c encore mieux, si tu peut maider a émliorer le code parcke la il marche pas pour des grands nombres de lettres :s
0

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

Posez votre question
nem02004
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007

6 févr. 2006 à 14:10
Voila mon code marche, mais comme je ne suis pas un super programmeur, je pense qu'il ya moyen de l'amélioré, c'est la que vous intervenez :D

char * replace(char *buf,...)
{
char *exps[1024];
char *p;
int ep = -1;
va_list vp;
va_start(vp,buf);
char result[50];
sprintf(result,"");
while(p = (char *)va_arg(vp, char *) )
{
exps[ep++] = p;
sprintf(result,"%s%c",result,p);
}
return result;
}


int main(int argc, char* argv[]) {
MessageBox(NULL,replace(0, 86,111,105,108,97,32,99,101,99,105,32,101,115,116,32,117,110,101,32,103,114,97,110,100,101,32,102,114,97,115,101,44,32,101,116,32,111,110,32,99,111,110,115,116,97,116,101,32,113,117,101,32,99,97,32,109,97,114,99,104,101,32,33, 0),NULL,0);
}
0
cs_Joky
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
7 févr. 2006 à 12:26
Ah les fonctions à arguments variables, c'est pas de mon domaine :)

Et on ne retourne jamais un pointeur sur le tas comme ça. Autant passer par un argument supplémentaires

if(!Meilleur("Joky")) return ERREUR;<
0