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 :

Besoin d'explication d'un bloc en C


Sujet :

C

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 56
    Points : 42
    Points
    42
    Par défaut Besoin d'explication d'un bloc en C
    Bonsoir,

    je souhaite si quelqu'un pourra me corriger ce bloc d'instruction et me dire si je l'ai compris correctement ou pas, et veuillez SVP m’éclaircir le dernier bloc à partir de while (dans le pgm appelant)

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    char input[30]="",name[ 50]="";// la  chaine saisie
    int n,i=1,trouve;
    char ret[50];
    char iStr[1];
    char rep = 'n';
    char fileName[10];
    int chercher(char pSalle[10],char pName[50])
     
    {
        int res;
        FILE *db1;
            db1 = fopen(pSalle,"r"); //on ouvre db1 en mode ecriture
        if (db1 == NULL)  //s'il ne s'ouvre pas correctement le valeur NULL est retournée
                {
                    printf("Erreur de lecture des données.\n"); //afficher ce message
                    res = 0; //rein trouver
                }
        else
                {
                    fscanf(db1,"%s",ret);// lire le nbre d'elements du fichier, on lit et on enregistre dans ret
                     while(strcmp(ret,"EOF")!=0 && strcmp(ret,name)!=0) //tantque la valeur lue est différente de  EOF et valeur saisie 
                                                fscanf(db1,"%s",ret); //donc afficher le nom saisi
                     if (strcmp(ret,"EOF")!=0) //si seulemnt la valeur lue est différente à EOF
                                                 res = 1 ;//la valeur lus et saisie sont identiques
                     else res = 0;//rien trouver
                }
    fclose(db1);
    return res;
    }
    main()
    {
            printf("veuillez saisir quelque chose :\n\n");//donner la main au user de saisir 
            while (strcmp(input,"")==0)//compare ce que le user a saisie avec le vide
                {
                    scanf("%s",input);//lire et afficher ce le user à tapé
                }
            puts("\nBonjour...\n\n");//afficher bonjour..
            printf("Quel est votre nom :\n\n");//afficher ce msg
            scanf("%s",name);//lire et afficher ce que le user a tapé
            printf("\nBienvenue %s\n\n",name);//afficher bienvenue +nom entré
     
            while ( !trouve && i<= 3)
            {
                switch(i)
                    {
                        case  1:    strcpy(fileName ,"salle1.txt");
                                    break;
                        case  2:    strcpy(fileName , "salle2.txt");
                                    break;
                        case  3:    strcpy(fileName , "salle3.txt");
                                    break;
                    }
                if (chercher(fileName,name))
                    {
                        trouve = 1;
                        i = i+3;
                    }
                else i = i+1;
            }
            if (trouve)
                printf("\n\nVeuillez vous orienter vers la salle %i\n\n\n\n",i-3);
            else puts("Desole, votre nom n'existe pas dans la base de donnees,\contacter le service\ninscription.\n\n\n\n");
     
    getch();
    }
    Je vous remercie infiniment d'avance.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Pour le premier bloc :

    http://www.developpez.net/forums/d11...tie-programme/

    J'aimerais vraiment savoir d'où vient ce programme.

    Sinon, le switch(i) va regarder i et va exécuter le bloc d'instruction de la case (valeur) : où valeur == i.
    Il arrêtera d'exécuter et sortira du switch au premier break rencontré.

    Sinon si tu veux qu'on corrige c'est qu'il y a une erreur lors de la compilation ou lors de l'exécution?
    Il faudrait donc que tu nous donne ce message d'erreur.

  3. #3
    Membre éclairé
    Avatar de Kirilenko
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    234
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 234
    Points : 807
    Points
    807
    Par défaut
    • Attention, EOF est une valeur constante, pas une chaîne de caractère. Elle n'est pas écrit en dur dans ton fichier. Tu ne la récupéreras donc pas avec ton fscanf.
      Le mieux c'est d'utiliser la fonction :

      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int feof(FILE *stream);
      qui renvoie 0 si le curseur n'est pas positionné à la fin du fichier, ou une autre valeur sinon.
    • A quoi te servent les valeurs récupérées ?
    • A quoi servent tes arguments ?
    • le switch : http://c.developpez.com/cours/poly-c...age_3#LIII-B-7.
    Récursivité en C : épidémie ou hérésie ?

    "Pour être un saint dans l'Église de l'Emacs, il faut vivre une vie pure. Il faut se passer de tout logiciel propriétaire. Heureusement, être célibataire n'est pas obligé. C'est donc bien mieux que les autres églises" - Richard Stallman

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    EOF (End Of File) est une marque qui indique la fin du fichier.

    Mais il est aussi possible d'avoir un fichier :

    blabla
    blabla
    information
    EOF
    encore blable
    (marque EOF)

    où EOF est une chaîne de caractère.

    Je pense notamment à la réécriture d'une fonction shell du style
    cat << mot (souvent EOF) texte mot (souvent EOF).

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Points : 380
    Points
    380
    Par défaut
    comme Neckara, je pense que les 3 fichiers contiennent la chaîne "EOF" qui sert de marque de fin de fichier !

    A+
    Don't want money. Got money. Want admiration.
    (A tribute to SSG)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. besoin d'explication sur le c++
    Par poporiding dans le forum MFC
    Réponses: 13
    Dernier message: 17/12/2005, 18h01
  2. Besoin d'explications sur un bout de code
    Par zizitop dans le forum C
    Réponses: 7
    Dernier message: 26/04/2005, 14h51
  3. [C#] J'aurais besoin d'explication
    Par Roach- dans le forum Windows Forms
    Réponses: 18
    Dernier message: 10/03/2005, 16h00
  4. Besoin d'explications sur float et l'élasticité !
    Par KneXtasY dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/01/2005, 15h15
  5. [Foreign Key] Besoin d'explication.
    Par Andry dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2003, 11h34

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