#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Connection();
int main (){
Connection();
//parti clean, aucun erreur
int nombreMystere = 0, nombreEntre = 0;
const int MAX = 100, MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("Quel est le nombre ? ");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
} while (nombreEntre != nombreMystere);
return 0;
}
//fin de la parti clean
void Connection(){
char iden[100];
char motdp[100];
char isIns;
int verified = 0;
printf("Etes-vous deja inscrit ?(o/n)");
scanf("%d", &isIns);
if(isIns == o){
printf("Entrez votre identifiant");
scanf("%d", &iden);
printf("Entrez votre mot de passe");
scanf("%d", &motdp);
verified = MdpVerif(char motdp[],char iden[]);
if(verified == 0){
printf("Connecté avec succès");
}else{
printf("Identifiant ou mot de passe incorrect\n");
printf("Merci de réessyer");
Connection();
}
}
else{
printf("Alors enregistrez vous ici:");
printf("Identifiant:");
printf("Mot de passe:");
}
}
int MdpVerif(char MdpEntre[], char Identifiant[]){
}
Et il me sort l'erreur:
Line: 55 ; Message: expected expression before 'char'
Alors que toute mes variables de type 'char' sont clean, d'ou vient le problème ?
Ligne 45: tu donnes un format %d, alors que ta variable est du type char
Lignes 50 et 53: pas besoin de donner l'adresse de la variable, le nom de la variable est déjà une adresse (char [ ] ou char *)
Ligne 55: on ne donne pas le type de la variable lors de l'appel à une fonction (voir cette discussion)
Ligne 63: tu appelles Connection() à partir de Connection() ? Ce n'est pas une erreur en soi, mais sais-tu ce que tu fais ? Une boucle do....while serait plus logique.
Ton indentation est très sérieusement à revoir !!!
- Edité par edgarjacobs 13 juillet 2018 à 17:33:35
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
En tout cas, merci beaucoup. Mais pourquoi on a pas besoin de donner l'adresse de la variable, alors que pour tout les autre type si ? Et concernant le fait que j'appelle Connection() dans Connection(), je préfere utiliser la récursivité que un boucle.
En c, lorsqu'un tableau est déclaré, il s'agit simplement d'un suite d'éléments qui se suivent en mémoire, le nom du tableau contenant l'adresse du premier élément. Ainsi, int array[....] fait que array contient l'adresse de array[0], et char name[....] fait que name contient l'adresse de name[0]. Donc, les syntaxes suivantes sont parfaitement équivalentes (par paire)
Attention: array et name ne sont en aucun cas des pointeurs ! array est du type tableau de x entiers, et name est un du type tableau de x caractères.
En ce qui concerne la récursion, c'est idiot d'aller encombrer la pile, qui a une taille limitée, alors qu'un do...while est nettement plus naturel et moins consommateur de ressources. Ici, ça a peu d'importance, mais on a déjà vu des programmes se planter à cause d'une récursion mal gérée. Donc, imo, si on peut éviter la récursion, autant le faire.
- Edité par edgarjacobs 14 juillet 2018 à 0:15:18
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Erreur en C
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent