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 :

étude d'un fonction


Sujet :

C

  1. #1
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut étude d'un fonction
    Bonsoir , j'ai cette fonction ci :

    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
     
    /* fonction */
    #include <stdio.h>
     
    int lireligne&#40;char s&#91;&#93;, int lim&#41;
    &#123;
       int c, i;
     
       for &#40; i=0; i < lim - 1 && &#40;c=getchar&#40;&#41;&#41; != EOF && c!='\n'; ++i&#41;
          s&#91;i&#93; = c;
       if &#40; c == '\n' &#41;
       &#123;
          s&#91;i&#93; = c;
          ++i;
       &#125;
       s&#91;i&#93; = '\0';
       return i;
    &#125;
    j'aimerais savoir à quoi correspond le lim - 1 , et ce que veux dire le s[i] = c svp , au passage pourquoi on incrémente le i dans les instructions du if?
    merci

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut Re: étude d'un fonction
    Citation Envoyé par Bibouda
    Bonsoir , j'ai cette fonction ci :

    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
     
    /* fonction */
    #include <stdio.h>
     
    int lireligne&#40;char s&#91;&#93;, int lim&#41;
    &#123;
       int c, i;
     
       for &#40; i=0; i < lim - 1 && &#40;c=getchar&#40;&#41;&#41; != EOF && c!='\n'; ++i&#41;
          s&#91;i&#93; = c;
       if &#40; c == '\n' &#41;
       &#123;
          s&#91;i&#93; = c;
          ++i;
       &#125;
       s&#91;i&#93; = '\0';
       return i;
    &#125;
    j'aimerais savoir à quoi correspond le lim - 1 , et ce que veux dire le s[i] = c svp , au passage pourquoi on incrémente le i dans les instructions du if?
    merci
    lim - 1 ca veut dire ben lim - 1 par exemple si lim vaut 4 ben lim-1 vaut 3
    s[i] c'est l'element i du tableau cad le i-eme+1 element
    i++ dans le if ben pour incrementer i. Pourquoi faire? je sais pas essai de comprendre le code
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Provisoirement toléré
    Inscrit en
    Octobre 2002
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 214
    Points : 33
    Points
    33
    Par défaut
    j'ai essayé de comprendre le code figure toi , et tes réponses j'aurais pu les écrire moi meme , alors pourquoi lim - 1 et pas lim , pourquoi écrire s[i] = c , çà sert à quoi , et à quoi sert l'incrémentation du i ...

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Comme le nom de la fonction l'indique la fonction lit une ligne...

    Elle stocke la ligne dans un tableau nommé s et lim est la taille du tableau. Puisqu'une chaîne de caractères nécessite un '\0' à la fin, on peut avoir des caractères de la case 0 jusqu'à lim-2 (puisque s[lim-1] est la dernière case à pouvoir avoir le caractère nul)

    D'où le lim-1

    Lorsqu'on lit les éléments qui sont passés par l'entrée standard, on les écrit au fur et à mesure dans le tableau, il faut donc incrémenter i pour bien avoir:

    s[0] = Premier caractère
    s[1] = 2èmer caractère
    s[2] = 3ème caractère
    ....

    Après le for, si jamais il y a un '\n', la fonction copie ce caractère et mettra le '\0' après...

    Ensuite il rend la taille de ce qui a été lu, ie la variable i...

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    On lit jusqu'à lim-1 pour se réserver la place du caractère de fin de chaîne le \0.Celà permet de fournir une chaîne valise avec laquelle tu n'auras aucun problème avec les fonctions de chaînes de caractères.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par TrapD
    une chaîne valise
    Ca sent les vacances qui se rapprochent...

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    fearyourself >> exact depuis 12 h 25 exactement
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/11/2014, 21h21
  2. Réponses: 22
    Dernier message: 18/04/2011, 16h49
  3. Réponses: 7
    Dernier message: 25/02/2008, 16h30
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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