c'est en c++ il permet d'extraire un login et un password d'un url
Source / Exemple :
#include <string.h>
#include <stdio.h>
typedef struct data
{
char login[256], password[256], url[256];
} donnee;
int parser(char *toparse, donnee *answer);
int main(void)
{
donnee answer;
// un URL standard est compose de max 256 caractËres
char ton_url[256];
// saisie de l'url avec user/password
puts("Entrez l'url a traiter");
fgets(ton_url, 256, stdin);
// appel de la fonction de decomposition d'URL
// elle retourne -1 en cas d'erreur
if(parser(ton_url, &answer)==-1)
{
fprintf(stderr,"Format Error\n");
return -1;
}
// affichage du resultat
printf("Login: %s\n",answer.login);
printf("Password: %s\n",answer.password);
printf("Url: %s\n",answer.url);
/*
- produit une erreur d'execution sous Windows NT 4
- One or more CON code pages invalid for given keyboard
- Aucune erreur lors de l'execution sous Windows 95
- raison de l'erreur: inconnue
- getchar() est une macro standard du C ANSI
- getc(stdin) produit la meme erreur
- /
getchar();
return 0;
}
// fonction qui decompose l'URL pour en extraire
// le login et le password, si ces 2 elements
// sont presents dans l'URL qui sont entres
// param:
// toparse: contient l'URL ? decomposer
// answer: struct qui contiendra l'URL decompose
int parser(char *toparse, donnee *answer)
{
char *temp, url_temp[256], url_final[256];
// si l'URL ne commence pas par "
http://", erreur
if (strncmp(toparse, "
http://", 7))
return -1;
toparse += 7;
strcpy(url_temp,toparse);
strcpy(url_final, toparse);
// si pas de @ ca veut dire: pas de login ni de password
if ((temp = strtok(url_temp, "@")) == NULL)
{
// remplissage de la struct
answer->login[0] = '\0';
answer->password[0] = '\0';
sprintf(answer->url,"
http://%s",url_temp);
}
else if ((temp = strtok(toparse, ":")) != NULL)
{
int longueur;
// le login est dans temp
strcpy(answer->login, temp);
// temp contient maintenant le password
if ((temp = strtok(NULL, "@")) != NULL)
strcpy(answer->password, temp);
// on recopie le reste de l'url normal dans la struct
// en passant par-dessus le login et le password
longueur = strlen(answer->login) + strlen(answer->password) + 2;
sprintf(answer->url,"
http://%s",&url_final[longueur]);
}
return 0;
}
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.