26 réponses
moi je comprend pas pourquoi tu modifie ton programme dans cette partie...
la tu fais bien des strncmp( &chaine[u], fin, taille ) mais dans ton code final quand tu mixe les deux programme tu fais strncmp( buffer[50000], fin, taille ) pourquoi enlevé le & ?
while ( u < strlen( chaine ) && ok == 0 ) {
// Si on trouve debut dans la chaine saisie
if ( strncmp( &chaine[u], debut, taille ) == 0 ) {
u = u + taille;
taille = strlen( fin );
// On cherche maintenant la chaine fin
while ( u < strlen( chaine ) ) {
sous_chaine[indice] = chaine[u];
// Si on trouve la chaine fin...
if ( strncmp( &chaine[u], fin, taille ) == 0 ) {
// ...on enregistre l'indice
sous_chaine[indice] = '\0';
// ...on sort
ok = 1;
break;
la tu fais bien des strncmp( &chaine[u], fin, taille ) mais dans ton code final quand tu mixe les deux programme tu fais strncmp( buffer[50000], fin, taille ) pourquoi enlevé le & ?
POUrquoi je modifie ?
ha la la :)
Si je le savais. Je pense que si je remplace chaine par buffer,
-chaine représente la chaine de caractère total dans le programe 2
-buffer représente l'espace mémoire alloué à la lecture des 50 000 caractère.
Donc je me suis dit qu'il fallait que ces deux variable n'en soit qu'une dans le programme.
Mais peut être que je ne devrait pas. TU as essayé sans modifier?
ha la la :)
Si je le savais. Je pense que si je remplace chaine par buffer,
-chaine représente la chaine de caractère total dans le programe 2
-buffer représente l'espace mémoire alloué à la lecture des 50 000 caractère.
Donc je me suis dit qu'il fallait que ces deux variable n'en soit qu'une dans le programme.
Mais peut être que je ne devrait pas. TU as essayé sans modifier?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ben j'ai pas encore eu a utiliser le C sur des page web c'est pour ça ;)
mais essaye et tu verras bien ça change quelquechose
mais essaye et tu verras bien ça change quelquechose
En fait je ne comprends pas pourquoi tu as deux programmes. J'ai déjà fait plusieurs programmes utilisant libcurl (entre autre pour exploiter dans mes programmes des résultats des recherches sur google).
Il suffit d'une fonction qui te télécharge le code source de la page et qui te l'écrit dans un char*.
Après tu n'as qu'à parcourir ce char* dans ta main (ou dans une autre fonction appelée depuis la main).
Je ne voudrais pas que tu te décourages mais ta "while if while if", pour ma part je la trouve tellement laide que je n'ai pas envie de me pencher à fond dessus, résultat : je ne la comprends pas. Il ne faut pas oublier qu'un bon code est un code bien structuré et facilement "reprenable", et éventuellement commenté (mais ce n'est pas parce qu'on commente qu'il faut pour autant se permettre de faire du code moche).
et pas besoin de variables globales !
Un autre avantage d'avoir un code bien structuré en fonction est que, même quelqu'un qui n'aurait pas cette librairie pourrait se faire une petite main vite fait pour tester ta fonction sans dépendre du reste de ton code (sans avoir à faire le tri..).
Il suffit d'une fonction qui te télécharge le code source de la page et qui te l'écrit dans un char*.
Après tu n'as qu'à parcourir ce char* dans ta main (ou dans une autre fonction appelée depuis la main).
Je ne voudrais pas que tu te décourages mais ta "while if while if", pour ma part je la trouve tellement laide que je n'ai pas envie de me pencher à fond dessus, résultat : je ne la comprends pas. Il ne faut pas oublier qu'un bon code est un code bien structuré et facilement "reprenable", et éventuellement commenté (mais ce n'est pas parce qu'on commente qu'il faut pour autant se permettre de faire du code moche).
size_t ecrire(void *ptr, size_t size, size_t nmemb, void *stream)
{
sprintf(stream, "%s%s", stream, ptr); //concatène stream et str dans stream
return nmemb;
}
void dlwebsite(char *url, char *source)
{
CURL *session;
CURLcode res;
source[0] = '\0'; //initialisation source vide
session = curl_easy_init();
curl_easy_setopt(session, CURLOPT_URL, url);
curl_easy_setopt(session, CURLOPT_WRITEDATA, source);
curl_easy_setopt(session, CURLOPT_WRITEFUNCTION, ecrire);
curl_easy_perform(session);
curl_easy_cleanup(session);
}
void analyse(char *source) //éventuellement d'autres entrées
{
... je te laisse le soin d'y mettre le contenu si tu prends en considération ma présentation de code
}
int main()
{
char *url = "https://www.google.com/?gws_rd=ssl";
char *source = malloc(500000);
dlwebsite(url, source);
analyse(source);
}
et pas besoin de variables globales !
Un autre avantage d'avoir un code bien structuré en fonction est que, même quelqu'un qui n'aurait pas cette librairie pourrait se faire une petite main vite fait pour tester ta fonction sans dépendre du reste de ton code (sans avoir à faire le tri..).