Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un compte d'utilisateur (C)

2 novembre 2012 à 23:15:34

Bonjour, j'ai un petit problème avec mon programme en C.
Je ne peux pas comparer deux variables tableaux lors de la deuxième sélection de l'option 'A'

Info sur le programme:
Mon programme est un menu avec plusieurs choix. Le choix 'A' est de créer un compte d'utilisateur et de créer un mot de passe. L'utilisateur peut sélectionner une deuxième fois l'option 'A' pour changer son nom d'utilisateur seulement si sont MDP est le même que celui entrer la première fois.

Voici mon Code






# include <stdio.h>
# include <conio.h>
# include <ctype.h>
#include <string.h>
#include <time.h>
#include <windows.h>

#define ENTER 13
#define BACKSPACE 8


char motDePasse(char *pass, int taillePass);

int main(void)
{	
	char ch[30];				
	int	 choix,result=0;
	char util[15];
	char util1[15];
	char util2[15];
	char pass[30];
	int utilisateur=0;

	do
	{
		printf("\n\nMENU\n");								
		printf("A) Creer compte\n");
		printf("B) *****\n");		
		printf("C) *****\n");
		printf("D) *****\n");
		printf("E) *****\n");
		printf("F) *****\n");
		printf("Q) Quitter\n");
		choix = toupper(getch());
		
		if ('A')
		{
CreerCompte:
			if(utilisateur)
			{
				do
				{
					printf("\nPour creer un nouveau compte,\nVeuillez tapez le nom de votre compte actuelle.");
					scanf("%s",util1);
					result = strcmp(util,util1);
					if(result!=0)
					{
						printf("\nLe nom d'utilisateur ne concorde pas avec l'ancien.\nAppuyer sur une touche pour continuer.\n");
						getch();
					}
					else
					{	
						printf("\nQuel est votre mot de passe?");
						motDePasse(pass, 30);
						result = strcmp(pass,ch);
						if(result!=0)
						{
							printf("\n\nQuel est votre nouveau nom d'utilisateur?");
							scanf("%s",util2);
							printf("\n\nVotre nom d'utilisateur est maintenant %s\n",util2);
						}
						else
						{
							printf("Vous avez taper un mauvais mot de passe.");
							goto CreerCompte;
						}
					}

				}while(util!=util1);
				printf("\nQuel est votre mot de passe?");
				motDePasse(pass, 30);
			}
			else
			{
				printf("\nQuelle est votre nouveau nom d'utilisateur?");
				scanf("%s",util);
				utilisateur = 1;
				
MotDePasse:
				printf("\nTapez votre nouveau mot de passe.");
				motDePasse(pass, 30);
				strcpy(ch,pass);
				printf("\nRetapez votre mot de passe.");
				motDePasse(pass,30);
				result = strcmp(pass,ch);
				if(result!=0)
				{
					printf("\n\nVos mots de passes ne corresponde pas.");
					goto MotDePasse;
				}
				else
				{
					printf("\n\nVos mots de passe concorde.\nVeuiller continuer a l'aide du menu.");
				}
					
				
			}
		}
	
	}while(choix!='Q');

}

char motDePasse(char *pass, int taillePass)
{
	int i=0;
	int result=0;
 
	char rep;

	do
	{
		rep = getch();
		switch(rep)
		{
			case ENTER:
			pass[i] ='\0';
			i=0;
			break;
			case BACKSPACE:
			if(i>0)
			{
				i--;
				printf("\b \b"); //te permet de reculer, faire un espace, reculer dans la console (efface *)
			}
			break;
			default:
			printf("*");
			pass[i] = rep;
			i++;
			}
		}while(rep != ENTER);
		return(*pass);
}
  • Partager sur Facebook
  • Partager sur Twitter
2 novembre 2012 à 23:27:12

bah...
pour comparer deux tableaux tu compares les valeurs de chaque case une à une :
int strcmp(char tab1[], int tailleTab1, char tab2[], int tailleTab2)
{
  if(tailleTab1!=tailleTab2)return 0;
  else
   {
   for(int i=0;i!=tailleTab1;i++)
      {
           if(tab1[i]!=tab2[i])return 0;
      }
   }
  return 1; // si ya eu aucune erreur;
}
  • Partager sur Facebook
  • Partager sur Twitter
2 novembre 2012 à 23:44:45

le programme fonctionne pour comparer avec strcmp() dans le premier cas.

mon problème est dans cette partie.
Tenté de l'exécuter et essayer de créé un nouveau compte.

do
				{
					printf("\nPour creer un nouveau compte,\nVeuillez tapez le nom de votre compte actuelle.");
					scanf("%s",util1);
					result = strcmp(util,util1);
					if(result!=0)
					{
						printf("\nLe nom d'utilisateur ne concorde pas avec l'ancien.\nAppuyer sur une touche pour continuer.\n");
						getch();
					}
					else
					{	
						printf("\nQuel est votre mot de passe?");
						motDePasse(pass, 30);
						result = strcmp(pass,ch);
						if(result!=0)
						{
							printf("\n\nQuel est votre nouveau nom d'utilisateur?");
							scanf("%s",util2);
							printf("\n\nVotre nom d'utilisateur est maintenant %s\n",util2);
						}
						else
						{
							printf("Vous avez taper un mauvais mot de passe.");
							goto CreerCompte;
						}
					}

				}while(util!=util1);
  • Partager sur Facebook
  • Partager sur Twitter
3 novembre 2012 à 0:29:15

tu pourrais donner la ligne qui bug ? je comprend pas ton problème ^^"
  • Partager sur Facebook
  • Partager sur Twitter
3 novembre 2012 à 1:16:53

Déjà, évite d'utiliser les goto. C'est à bannir de ses codes. On peut tout faire avec des boucles. (Je t'assure !)

Ensuite, pour ton menu, tu devrais l'enfermer dans une fonction qui ne retournerait que le choix final, traité par la suite avec un switch, ou encore mieux, qui se chargerait d'appeler les fonctions nécessaires elle même.

Ensuite, je trouve qu'ergonomiquement, c'est assez bizarre. Quel programme demande le nom d'un utilisateur déjà enregistré pour pouvoir en créer un nouveau ?

Pour finir, tu devrais créer une structure utilisateur, qui contiendrait le nom d'utilisateur et son mdp, tu récupères ensuite l'entrée clavier pour le nom d'utilisateur et le mdp correspondant, et tu compares ensuite. De un ça simplifie ton code, de deux ça rajoute une sécurité supplémentaire.

Sinon, pour ton problème, tu confonds tableau et pointeur. Je te conseille de faire un tour ici : La vérité sur les tableaux et pointeurs en C
  • Partager sur Facebook
  • Partager sur Twitter
21 février 2023 à 12:58:39

Bonjour, j'ai un un problème.

Comment créer un compte utilisateur sur c++ ne demandant que du nom, prénom,code,et e-mail 

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2023 à 14:35:46

@MoustaphaBARRY8 Bonjour, merci de ne pas squatter le sujet des autres et de créer un déterrage pour une nouvelle question. Créer votre sujet dans le respect des règles du forum en nous fournissant  le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter