Fonction qui test un email !

Fermé
Mizo-Up Messages postés 41 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 25 mars 2014 - 4 mai 2013 à 15:54
 nis - 22 déc. 2013 à 23:59
Bnj tous le monde ! je veux un aide sur cette fonction !

Une fonction emailevalide qui recoit une chaine de caractere (email) et verifie si l'email et valide ou non.
un email est valide lorsque il contient les caractere '@' et '.' .

--------------------------------------------------------------------------------------------------------------------
au debut il ya des info pour inscrire dans la biblio : nom, prenom, age, nbr de livre, email.

voila mn ressaye, et je veux une aide ;)
--------------------------------------------------------------------------------------------------------------------

#include <stdio.h>
#include <stdlib.h>

typedef struct{
char nom[10];
char prenom[10];
int age;
int nbr_livre;
char email [20];
}info;
char TabA[50];
char emailvalide (char email)
{
int i;
int n;
for (i=0;i<n;i++){
if (i="@" && i="." )
printf ("email valide");
}
}
int main()
{
char email[20];
printf("Entrer votre email!\n");
scanf (%s,&email);
emailvalide(email);
return 0;
}
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
4 mai 2013 à 18:00
Bonjour,

Dans main():
scanf (%s,&email); -> Pas de & devant email.


Dans emailvalide() :
char emailvalide (char email)
Attention, tu mets char emailvalide() et tu ne mets pas de return. Si la fonction renvoie rien : void emailvalide(). Le mieux serait de renvoyer 1 si c'est valide 0 sinon. Ce qui donnerait : int emailvalide().
De plus, tu mets char email en argument alors que email est un tableau.
Il faut donc mettre : int emailvalide(char *email)

for (i=0;i<n;i++){
n n'est pas initialisé. Il faudrait faire : n=strlen(email);

if (i="@" && i="." )
L'opérateur de comparaison est == (pas =). De plus, tu souhaites comparer email[i] (et non i) avec un caractère (et non avec une chaine) donc : if(email[i]=='@')... Pareil pour le '.' (et non "."). Et enfin revoit la condition car un caractère vaudra jamais '@' ET (&&) '.' à la fois.

printf ("email valide");
N'oublie pas de mettre '\n' après valide.

Voilà, corrige déjà tout ça. Reposte ton nouveau code, et mets-le entre deux balises "code" (bouton <> à droite de "S" souligné).

Cdlt,
0
Mizo-Up Messages postés 41 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 25 mars 2014
4 mai 2013 à 23:55
voila le code mais il ne marche plus, tjr il me donne valide,

#include <stdio.h>
#include <stdlib.h>

typedef struct{
char nom[10];
char prenom[10];
int age;
int nbr_livre;
char email [20];
}info;
char TabA[50];
int emailvalide (char *email)
{
int i;
int n=strlen(email);
for (i=0;i<n;i++){
if(email[i]=='@' && email[i]=='.'){
printf("valide\n");
return 1;}
else{
printf("non valide");
return 0;}
}
}
int main()
{
info a;
char email[20];
printf("Entrer votre email!\n");
scanf ("%s",a.email);
emailvalide(email);
return 0;
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
5 mai 2013 à 00:20
Dans main() :
emailvalide(email);
Attention, tu envoies email en argument alors qu'il n'est pas initialisé (ton scanf porte sur a.email et non sur email). Faut une certaine cohérence.
Donc, tu peux enlever char email[20], laisser scanf("%s",a.email); et mettre emailvalide(a.email);

Dans emailvalide() :
if(email[i]=='@' && email[i]=='.'){
Comme dit plus haut, un caract_re ne peut pas valoir '@' et '.' à la fois. Il faut que tu revois la condition. Pour qu'un email soit valide, il faut un @ et un '.' mais ce n'est pas pour un même i.

Sinon, il faut inclure string.h

Et je remets :
Reposte ton nouveau code, et mets-le entre deux balises "code" (bouton <> à droite de "S" souligné).
0
DarkenNights Messages postés 137 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 17 décembre 2013 10
5 mai 2013 à 00:10
Bonjour,

Pour moi dans ton main tu déclare ta structure comme il faut, ensuite tu déclare une chaîne de caractère jusque là aucun problème :)
Mais ensuite tu demande de rentrer l'email à l'utilisateur, à ce moment tu met ce qu'a écrit l'utilisateur dans la variable email de la structure pour ensuite appeler ta fonction de vérification d'email avec la chaîne de caractère que tu as déclaré juste avant mais que tu n'a pas touché. Donc forcement la chaîne de caractère étant vide il ne traite rien.

Je le vois comme ça après c'est à confirmer.
0
Mizo-Up Messages postés 41 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 25 mars 2014
5 mai 2013 à 00:22
tu peux me donner la correcition et ecris moi le code source stp ;)
0
DarkenNights Messages postés 137 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 17 décembre 2013 10
Modifié par DarkenNights le 5/05/2013 à 00:24
Voila ton nouveau main() :

int main()
{
info a;
printf("Entrer votre email!\n");
scanf ("%s",a.email);
emailvalide(a.email);
return 0;
}
0
Mizo-Up Messages postés 41 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 25 mars 2014
5 mai 2013 à 00:27
merci j'ai fais le test, mais trj la resultas : non valide, meme ke j'ai entrer @ et .
tu peux teste aussi ;)
0
DarkenNights Messages postés 137 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 17 décembre 2013 10
5 mai 2013 à 00:32
Juste au debut de ta fonction qui verifie l'email tu peut faire un printf pour affichier l'email pour voir si tu récupere bien ce que tu veux stp?
0
Mizo-Up Messages postés 41 Date d'inscription mardi 19 février 2013 Statut Membre Dernière intervention 25 mars 2014
5 mai 2013 à 00:37
J'ai pas compris, mais stp j'ai besoin de l'corrige de cet exercice :(
just donne moi le code stp
0