Posté(e) le 12 mars 200817 a #include <stdio.h> #include <stdlib.h> #include <string.h> char recup_champ(char*,char*,char*); int main(void) { char*requete_get ; char message[50]; requete_get=(char*)getenv("QUERY_STRING"); recup_champ(requete_get,"message",message); } ET quand j'execute voila ce que j'ai . [Linker error] undefined reference to `recup_champ' Ce programme servira de script pour recupere des données a partir d'une url .
Posté(e) le 12 mars 200817 a Auteur ue j'ai compris enfaite moi en c c'est lamentable des fois genre je coryais qu'il allai me chercher ce qu'il y avait dans message tout seul . Bon j'ai une autre question avec requete_get je recupere ca "message=Bonjour&B1=Valider" ce que je voudrais c'est pouvoir extraire juste le message qui Bonjour dans ce cas la . code html : <p>Quel est votre message ? <input size="20" name="message" type="text"></p>
Posté(e) le 12 mars 200817 a Auteur Ok je vais essayer Alors je voudrais extraire dans une variable par exemple le mot Bonjour de la chaine message=Bonjour&B1=Valider sachant que Bonjour pourrait etre salut , kikoo , mdr , lol , 53480 etc. Sauf que je conai pas la fonction qui permetterai de faire ca . ( en language c ou c++ ) c'est pour faire un script cgi . Merci
Posté(e) le 12 mars 200817 a Donc tout ce qui est entre message= et &, c'est ça ? Ça peut se faire avec une expression rationnelle, par exemple, libpcre pour du C ou libpcrecpp / boost pour du c++
Posté(e) le 13 mars 200817 a ou alors comme un gros goret : int deb = 0, fin; char* outstr; //récupération de la position du premier '=' while(message[deb] != '=') deb++; deb++; //récupération de la position du premier '&' fin = deb; while(message[fin] != '&') fin++; //copie de la chaine correpsondante outstr = malloc((fin-deb)*sizeof(char)); strncpy(outstr, message+deb, fin-deb); outstr[fin-deb] = 0; Y a pitêtre à jouer sur les indices si jamais un '&' ou un '=' resterait par mégarde ( ) Mais sinon, la solution la plus pérenne, c'est effectivement d'utiliser une bilbiothèque de mlanipulation de chaînes. Sans aller jusqu'à la regexp, tu peut y arriver avec des split() ou autre
Posté(e) le 13 mars 200817 a Ou alors sans lib, on peut faire comme ça : char *start = strchr (txt, '=')+1; char *end = strchr (start, '&')+1; char *resultat; resultat = malloc ((end-start)*sizeof (char)); memcpy (resultat, start, (end-start)); resultat [end-start-1] = 0;
Posté(e) le 13 mars 200817 a yep, plus simple (sauf que on veut pas le '&' -qui sera remplacé par 0 - donc uniquement "end = strchr(start, '&');" )
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.