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
nis - 22 déc. 2013 à 23:59
A voir également:
- Fonction qui test un email !
- Test performance pc - Guide
- Fonction si et - Guide
- Test composant pc - Guide
- Comment creer un compte email - Guide
- Redmi note 13 5g test - Accueil - Téléphones
3 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
4 mai 2013 à 18:00
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,
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,
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
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;
}
#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;
}
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
5 mai 2013 à 00:20
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é).
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é).
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
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.
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.
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
5 mai 2013 à 00:22
tu peux me donner la correcition et ecris moi le code source stp ;)
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
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;
}
int main()
{
info a;
printf("Entrer votre email!\n");
scanf ("%s",a.email);
emailvalide(a.email);
return 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
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 ;)
tu peux teste aussi ;)
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
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?
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
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
just donne moi le code stp