Aide en C
Fermé
nito
-
1 juin 2005 à 13:52
rer_louz Messages postés 276 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 29 décembre 2008 - 1 juin 2005 à 18:16
rer_louz Messages postés 276 Date d'inscription mercredi 26 novembre 2003 Statut Membre Dernière intervention 29 décembre 2008 - 1 juin 2005 à 18:16
2 réponses
TuXor
Messages postés
97
Date d'inscription
lundi 23 mai 2005
Statut
Membre
Dernière intervention
28 avril 2006
25
1 juin 2005 à 14:30
1 juin 2005 à 14:30
Salut nito,
pour résoudre ton problème il faudrait que tu puisse utiliser les fonctions de la bibliothèque "string", qui permet de manipuler les chaines de caractère en C.
Parmi ces fonction il en existe qui te permettent de chercher une chaîne à l'intérieur d'une autre, de concaténer des chaînes etc...
bref tout un arcenal qui pourrait te rendre service.
reste à savoir si cette bibliothèque est disponible sur ton environement...
pour ce qui est de passer tes chaîes vers des entiers, il existe également des fonctions que je n'ai plus en tête
du style : atoi() ASCII to Integer, atof() etc...
j'epère que ça peut t'aider, @+
pour résoudre ton problème il faudrait que tu puisse utiliser les fonctions de la bibliothèque "string", qui permet de manipuler les chaines de caractère en C.
Parmi ces fonction il en existe qui te permettent de chercher une chaîne à l'intérieur d'une autre, de concaténer des chaînes etc...
bref tout un arcenal qui pourrait te rendre service.
reste à savoir si cette bibliothèque est disponible sur ton environement...
pour ce qui est de passer tes chaîes vers des entiers, il existe également des fonctions que je n'ai plus en tête
du style : atoi() ASCII to Integer, atof() etc...
j'epère que ça peut t'aider, @+
rer_louz
Messages postés
276
Date d'inscription
mercredi 26 novembre 2003
Statut
Membre
Dernière intervention
29 décembre 2008
71
1 juin 2005 à 18:16
1 juin 2005 à 18:16
Bijour,
Si tu cherches a récupérer tous les nombres que tu as dans ta chaine et que chaque donnée est séparée par un espace, tu peux essayer ceci
int res[nb_nombre];
readBuffer(char * buffer, int lengthBuffer)
{
int i = 0;
float tabRes[maxFloat];
float res;
int nbFloatReaded = 0;
while ( i < lengthBuffer)
{
if ( (buffer[i] >= '0' ) && (buffer[i] <= '9') )
{
if(readFloat ( buffer[i] , lengthBuffer - i ,&res,
&lengthReaded))
{
tabRes[nbFloatReaded] = res ;
nbFloatReaded++;
}
i+=lengthReaded;
}
while ( buffer[i] != ' ') && ( i < lengthBuffer)) i++;
}
}
bool readFloat ( char * buffer, int maxRead, float & res, int &lengthFloat)
{
char strRes[72];
int i = 0;
while ( (i< maxRead) &&
( ((buffer[i] >= '0' ) && (buffer[i] <= '0'))
|| ( buffer[i] == '.')
)
)
{
strRes[i] = buffer[i++];
}
if (i) //ici tu peux ajouter des tests pour verifier que ton nombre est valide,
//par exemple que tu es bien sur un espace
{
*res = atof( strRes);
return true;
}
else
return false;
}
C'est pas sur que ca marche, j'ai pas testé, mais ca doit fonctionner.
A++
Si tu cherches a récupérer tous les nombres que tu as dans ta chaine et que chaque donnée est séparée par un espace, tu peux essayer ceci
int res[nb_nombre];
readBuffer(char * buffer, int lengthBuffer)
{
int i = 0;
float tabRes[maxFloat];
float res;
int nbFloatReaded = 0;
while ( i < lengthBuffer)
{
if ( (buffer[i] >= '0' ) && (buffer[i] <= '9') )
{
if(readFloat ( buffer[i] , lengthBuffer - i ,&res,
&lengthReaded))
{
tabRes[nbFloatReaded] = res ;
nbFloatReaded++;
}
i+=lengthReaded;
}
while ( buffer[i] != ' ') && ( i < lengthBuffer)) i++;
}
}
bool readFloat ( char * buffer, int maxRead, float & res, int &lengthFloat)
{
char strRes[72];
int i = 0;
while ( (i< maxRead) &&
( ((buffer[i] >= '0' ) && (buffer[i] <= '0'))
|| ( buffer[i] == '.')
)
)
{
strRes[i] = buffer[i++];
}
if (i) //ici tu peux ajouter des tests pour verifier que ton nombre est valide,
//par exemple que tu es bien sur un espace
{
*res = atof( strRes);
return true;
}
else
return false;
}
C'est pas sur que ca marche, j'ai pas testé, mais ca doit fonctionner.
A++
1 juin 2005 à 16:00
Merci quand meme pour ton aide