IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Un test que j'essaie


Sujet :

C

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Un test que j'essaie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #include <stdio.h>
    #include <string.h>
     
    int main(){
        FILE *fi = NULL;
        char chnUser[50], chnFi[50], chnRec[50];
        char util[50];
        long res;
     
        fi = fopen("testc.txt","r");
        if (fi == NULL){
    	printf("Pas de fichier dans le repertoire actif");
    	// menuPrincipal();
        }
        else
        {
    	do
    	    {
    	    fgets(chnFi,sizeof(chnFi),fi);
    	    strncpy(chnRec,chnFi,strlen(chnFi)-1);
    	    printf("%s\n", chnRec);
    	    printf("Utilisateur: ");
    	    scanf("%s", util);
    	    printf("\n\n\nMot de passe: ");
    	    gets(chnUser);
    	    strncmp(chnRec,chnUser,strlen(chnUser));
    	    if (res != 0){
    		fi->_file;
    		if (fseek(fi,0,SEEK_END)) { fclose(fi); break; }	
    		}
    	    else
    		{
    		printf("\n\n\t\t\tBienvenue dans mon jeu");
    		// appel de module
    		}
    	    }while(fseek(fi,0,SEEK_END));
        }
    }
    C'est avec ce code que j'essaie de faire un test pour voir si j'ai retenu quelque chose. Mon programme affiche la demande utilisateur et s'arrete apres que l'utilisateur est donne son nom et appuyer sur Entree.

    Il est ou mon probleme?

    Cordialement

  2. #2
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 076
    Points : 2 328
    Points
    2 328
    Par défaut
    Salut,

    Si tu ne peux pas rentrer ton mot de passe, c'est parce que tu ne vide pas ton buffer clavier.
    Le mieux est de faire sa propre fonction de vidage buffer_stdin, ou si tu veux vraiment pas te prendre la tête, utilise fflush(stdin);

    Ensuite, ce serait sympa de ta part de nous decrire le fonctionnement de ton programme.

    Deja, je vois "C'est avec ce code que j'essaie de faire un test pour voir si j'ai retenu quelque chose".
    Je me dit : tiens, il essais d'écrire des donnée rentrer au clavier dans un fichier texte.
    Première surprise, tu ouvre ton fichier texte en "r", ce qui ne permet pas l'écriture. Ensuite, en lisant un peu ton code, je m'aperçois que tu essais de faire quelque chose, si je ne m'abuse, qui ressemble a l'identification d'un utilisateur.
    Je voudrais savoir ce que tu veux faire réellement avec ce code.
    Je voudrais aussi savoir la structure que va avoir l'intérieur de testc.txt.

    (par exemple :

    Utilisateur
    Mot de Passe
    Utilisateur
    Mot de Passe
    ....
    )


    Voila voila.

  3. #3
    Membre éclairé Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Points : 862
    Points
    862
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Le mieux est de faire sa propre fonction de vidage buffer_stdin, ou si tu veux vraiment pas te prendre la tête, utilise fflush(stdin)
    Pourquoi ne faut-il pas utiliser fflush(stdin) pour vider le buffer clavier ?

    Pour te reprendre:
    Le mieux est de faire sa propre fonction de vidage buffer_stdin, ou si tu veux vraiment pas te prendre la tête, cherche dans le forum, ce n'est pas cela qui manque.

  4. #4
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    De plus, dans ce code, res n'est pas initialisé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	    gets(chnUser);
    	    strncmp(chnRec,chnUser,strlen(chnUser));
    	    if (res != 0){
    		fi->_file;...
    Qu'est donc censé faire fi->_file ?
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Identification d'utilisateur
    Merci a vous tous. Je vais utiliser vos conseils et voir mes resultats, je vous ferez savoir.

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 24
    Points
    24
    Par défaut Identificateur d'utilisateur
    Je devrais appele ma question "Identificateur d'utilisateur", comme ca vous auriez une idée de ce que je souhaite faire avec mon programme.
    Voici la construction interne de mon fichier testc.txt:
    (
    bonjour
    bonne nuit
    couleur
    mardi
    lundi
    janvier
    homme
    ...
    )
    C'est pour cela que j'utilise le fgets(); pour parcourir mon fichier car cette fonction s'arrete lorqu'elle trouve un '\n' ou le # ascii 10 qui est le caratere retour chariot. J'ai tapez mon texte sur notepad, il est comme un dictionnaire de mot de passe. Je ne l'ai pas compliqué parce que tout ce que je veux c'est de voir jusqu'ou j'utilise logiquement les fonctions que je connais.
    Dans mon code le fi.->_fic est censé passer a une autre ligne si les deux chaines ne sont pas identiques, et je fais ça toutes les fois que l'utilisateur naie pas encore trouvé le un mot de passe qui existe dans le fichier. Le prograimme ne gère pas les noms d'utilisateurs

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 28
    Points : 24
    Points
    24
    Par défaut L'identification n'a pas été effectuée
    Bonjour,
    J'ai modifié mon code suite à vos conseils, la fonction fflush(); est tres utile. Le programme, devant comparer l'entrée de l'utilisateur avec une chaine se trouvant dans testc.txt, s'arrete maintenant apres avoir pris le mot de passe entré par l'utilisateur et c'est cette chaine qu'il devait comaparer. Je vous donne mon nouveau code en entier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include <stdio.h>
    #include <string.h>
     
    int main(){
        FILE *fi = NULL;
        char chnUser[50], chnFi[50], chnRec[50];
        char util[50];
        long res = 0;
     
        fi = fopen("testc.txt","r");
        if (fi == NULL){
    	printf("Pas de fichier dans le repertoire actif");
    	// menuPrincipal();
        }
        else
        {
    	do
    	    {
     
    	    fgets(chnFi,sizeof(chnFi),fi);
    	    strncpy(chnRec,chnFi,strlen(chnFi)-1);
    	    // printf("%s\n", chnRec);
    	    printf("Utilisateur: ");
    	    scanf("%s", util);
    	    fflush(stdin);
    	    printf("\n\n\nMot de passe: ");
    	    fflush(stdin);
    	    scanf("%s", chnUser);
    	    strncmp(chnRec,chnUser,strlen(chnUser));
    	    if (res != 0){
    		fi->_file;
    		if (fseek(fi,0,SEEK_END)) { fclose(fi); break; }	
    		}
    	    else
    		{
    		printf("\n\n\t\t\tBienvenue dans mon jeu");
    		// appel de module
    		}
    	    }while(fseek(fi,0,SEEK_END));
        }
    }
    La comparaison, le resultat de la comparaison et le test de fin du fichier n'ont pas été effectués.

    Merci encore . . .

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2013, 17h34
  2. XML : Teste que le fichier est loadé
    Par ItsInTheGame1988 dans le forum VBScript
    Réponses: 2
    Dernier message: 13/03/2012, 13h15
  3. N'activer les tests que lors de l'intégration-test
    Par michaelcourcy dans le forum Maven
    Réponses: 3
    Dernier message: 17/02/2009, 10h08
  4. Fonction de test que des lettres
    Par Ekimasu dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/05/2007, 20h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo