Fonction plus ou moins basic [Résolu]

Signaler
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007
-
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
-
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

Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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;<
Messages postés
127
Date d'inscription
mardi 23 août 2005
Statut
Membre
Dernière intervention
9 mai 2011

Je comprends pas trop ce que tu voudrais faire, et encore moins où est ton problème ! Soit un peu plus précis stp.
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
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);
}
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007

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
Messages postés
47
Date d'inscription
vendredi 21 mai 2004
Statut
Membre
Dernière intervention
23 avril 2007

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);
}
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
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;<