- #include <stdio.h>
-
- int gettok(char *subject, int num, int sep, char *dszt) {
- char *c, *d; /*deux pointeurs sur subject*/
- int i = 0, of = 0 , r = 0; bool cont;
- if (num < 0) { cont = true; num *= -1; } /*si num est négatif*/
- else cont = false;
- c = d = subject;
- /*si il y en a, on pase les séparateurs du début, afin de
- ne pas retourner un token vide */
- while (*c == sep) { *c++; of++; } d = c;
- //tant que le chaine n'est pas parcourue entièrement par c..
- while (*c) {
- //si on rencontre le caractère de séparation...
- if (*c == sep) {
- i++;
- if (i == num) {
- if (!cont) while (d < c) *dszt++ = *d++;
- else while (*d) *dszt++ = *d++;
- *dszt = 0;
- //retourne l'offset du token
- return of;
- }
- //comme d = c, on incrémente of de r qu'on remet à 0
- while (*c == sep) { *c++; of++; } of += r; r = 0; d = c;
- }
- else { c++; r++; }
- }
- //c arrivé à la fin de la chaîne, on vérifie si il reste un token...
- if (d < c) {
- i++;
- if (i == num) {
- while (*d) *dszt++ = *d++;
- *dszt = 0;
- return of;
- }
- }
- //le token recherché n'existe pas, on retourne -1
- return -1;
- }
-
- int main(int argc, char* argv[])
- {
- char buff[32];
- int o = gettok("22:46",2,':',buff);
- printf("minutes: %s offset: %d\n",buff,o);
- gettok("Couleur: bleu Prix: 1999 Année: 1996 Desc: Très belle voiture, ayant fait..",
- -8,32,buff);
- printf("%s\n",buff);
- return 0;
- }
#include <stdio.h>
int gettok(char *subject, int num, int sep, char *dszt) {
char *c, *d; /*deux pointeurs sur subject*/
int i = 0, of = 0 , r = 0; bool cont;
if (num < 0) { cont = true; num *= -1; } /*si num est négatif*/
else cont = false;
c = d = subject;
/*si il y en a, on pase les séparateurs du début, afin de
ne pas retourner un token vide */
while (*c == sep) { *c++; of++; } d = c;
//tant que le chaine n'est pas parcourue entièrement par c..
while (*c) {
//si on rencontre le caractère de séparation...
if (*c == sep) {
i++;
if (i == num) {
if (!cont) while (d < c) *dszt++ = *d++;
else while (*d) *dszt++ = *d++;
*dszt = 0;
//retourne l'offset du token
return of;
}
//comme d = c, on incrémente of de r qu'on remet à 0
while (*c == sep) { *c++; of++; } of += r; r = 0; d = c;
}
else { c++; r++; }
}
//c arrivé à la fin de la chaîne, on vérifie si il reste un token...
if (d < c) {
i++;
if (i == num) {
while (*d) *dszt++ = *d++;
*dszt = 0;
return of;
}
}
//le token recherché n'existe pas, on retourne -1
return -1;
}
int main(int argc, char* argv[])
{
char buff[32];
int o = gettok("22:46",2,':',buff);
printf("minutes: %s offset: %d\n",buff,o);
gettok("Couleur: bleu Prix: 1999 Année: 1996 Desc: Très belle voiture, ayant fait..",
-8,32,buff);
printf("%s\n",buff);
return 0;
}