Url.cpp

Contenu du snippet

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.

Du même auteur (zeus19)