Recuperer une chaine entre 2 autres chaines
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour , je voudrai comme le titre l'indique une fonction en C/C++ qui va récupérer une chaine compris entre deux autres chaines, exemple :
J'ai chercher sur le web mais j'ai trouvé cette fonction qu'en PHP et en C# mais je la veux en C/C++, j'attends vos réponses et Merci d'avance ;)
int main()
{
char chaine[] = "<strong>Henry pool is heaer </strong>";
char debut[] = "<strong>", fin[] = "</strong>", resultat[50] = "";
// Avoir se qu'il y à entre la variable "debut" et "fin" et le mettre dans "resultat"
resultat = extract(chaine, debut, fin);
printf("%s\n", resultat);
return 0;
}
J'ai chercher sur le web mais j'ai trouvé cette fonction qu'en PHP et en C# mais je la veux en C/C++, j'attends vos réponses et Merci d'avance ;)
2 réponses
-
Salut,
tu peux essayer un truc comme cela:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char** argv) { char* chaine = "<strong>Henry pool is heaer </strong>"; char* debut = "<strong>"; char* fin = "</strong>"; char*res; unsigned char cpt; while (strncmp(chaine++,debut,strlen(debut))); chaine+=strlen(debut)-1; res=chaine; while (strncmp(chaine++,fin,strlen(fin))); cpt=chaine-res-1; printf("%.*s\n",cpt,res); return (EXIT_SUCCESS); }
si tu veux une fonction:#include <stdio.h> #include <stdlib.h> #include <string.h> char* extract(char*data,char* deb,char* end,unsigned char* cmpt); int main(int argc, char** argv) { char* chaine = "<strong>Henry pool is heaer </strong>"; char* debut = "<strong>"; char* fin = "</strong>"; unsigned char cpt; chaine=extract(chaine,debut,fin,&cpt); printf("%.*s\n",cpt,chaine); return (EXIT_SUCCESS); } char* extract(char*data,char* deb,char* end,unsigned char* cmpt) { char*res; while (strncmp(data++,deb,strlen(deb))); data+=strlen(deb)-1; res=data; while (strncmp(data++,end,strlen(end))); *cmpt=data-res-1; return res; }
Il n'y a pas de gestion de débordement donc c'est à toi de modifier le code pour cela!!;)
@+ -
Trop sympa x) mille MERCI ;) et je vais voir quoi faire pour les "buffer overflow" . Encore merci :)