warning Posted March 12, 2008 Share Posted March 12, 2008 #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 . Link to comment Share on other sites More sharing options...
theocrite Posted March 12, 2008 Share Posted March 12, 2008 Il faudrait peut être que tu définisse ta fonction recup_champ Link to comment Share on other sites More sharing options...
warning Posted March 12, 2008 Author Share Posted March 12, 2008 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> Link to comment Share on other sites More sharing options...
theocrite Posted March 12, 2008 Share Posted March 12, 2008 Ce serait possible de reformuler ? Link to comment Share on other sites More sharing options...
warning Posted March 12, 2008 Author Share Posted March 12, 2008 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 Link to comment Share on other sites More sharing options...
theocrite Posted March 12, 2008 Share Posted March 12, 2008 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++ Link to comment Share on other sites More sharing options...
lorinc Posted March 13, 2008 Share Posted March 13, 2008 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 Link to comment Share on other sites More sharing options...
theocrite Posted March 13, 2008 Share Posted March 13, 2008 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; Link to comment Share on other sites More sharing options...
lorinc Posted March 13, 2008 Share Posted March 13, 2008 yep, plus simple (sauf que on veut pas le '&' -qui sera remplacé par 0 - donc uniquement "end = strchr(start, '&');" ) Link to comment Share on other sites More sharing options...
theocrite Posted March 13, 2008 Share Posted March 13, 2008 Exact, mais il faut remplacer end-start-1 par end-start Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.