Analyser une saisie utilisateur

Résolu
cs_Jade8 Messages postés 2 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 30 janvier 2007 - 29 janv. 2007 à 22:32
cs_Jade8 Messages postés 2 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 30 janvier 2007 - 30 janv. 2007 à 13:43
Bonsoir,

Je souhaite découper une chaine de caractères pour pouvoir la traiter par la suite, y a-t-il des fonctions qui permettent d'éliminer des délimiteurs "-" et espace puis vérifier si l'utilisateur à saisie les bonnes valeurs?

En vous remerciant par avance.

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
29 janv. 2007 à 22:52
Voici un routine que j'utilise régulierement:

char test[] = "salut-a tous";
char *ptr[3], *c = &test[0], *d = c;
int i = 0;

while(1)
{    if(*c ' ' || *c '-')
    {
        *c = 0;
         ptr[i++] = d; d = c+1;
    }
    else if(!*c) { ptr[i] = d; break; }
    c++;
}

ptr[0] contiendra "salut", ptr[1] contiendra "a" et ptr[2] contiendra "tous".


Il te suffis ensuite d'effectuer les test voulu sur les pointeurs

Attention.
La chaine principal se retrouvera modifié et les ptr en serons
dépendant. Si tu écrase ta chaine initiale et que tu utilise les ptr
immédiatement après, ils risquent de ne plus pointer sur quelque chose
de valide à l'utilisation. Voici une routine qui stock les "nouvelles"
chaines dans un tableau à deux dimentions tout en laissent la chaine
initiale inchangé:


char buffer[] = "salut-a tous";

char tab[3][10]; // <- 3 mots de chacun 9 char + 0 de fin de chaine

int i 0, j 0;


do

{

    int k = 0;

    while(buffer[i] != ' ' && buffer[i] != '-' && buffer[i]) tab[j][k++] = buffer[i++];

    tab[j++][k] = 0;

} while(buffer[i++]);

tab[0] contiendra "salut" tab[1] "a" et tab[2] "tous"

C++ (@++)<!--
3
cs_Jade8 Messages postés 2 Date d'inscription mardi 23 janvier 2007 Statut Membre Dernière intervention 30 janvier 2007
30 janv. 2007 à 13:43
Merci SAKingdom pr ta réponse.
0
Rejoignez-nous