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 :

Question au sujet des fonctions


Sujet :

C

  1. #1
    Membre actif
    Inscrit en
    Février 2006
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 311
    Points : 253
    Points
    253
    Par défaut Question au sujet des fonctions
    Bonsoir,
    j'aurai une question au sujet des fonctions en c
    est-ce quand une fonction retourne une valeur style strlen ou strcmp ...
    faut-il l'affecter à une variable ? ou on peut écrire strlen(chaine); et la fonction affiche un résultat sans affectation ?

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    strlen(chaine); va faire exactement ce que tu écris, c'est à dire calculer la longueur de la chaine de caractères et c'est tout.

    Maintenant, si tu veut l'afficher, il faudra utiliser une autre fonction (printf() par exemple) mais il faudra au préalable mémoriser la valeur retournée par strlen(). Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int longueur = strlen("Ma chaine à moi");
    printf("Longueur = %d\n", longueur);
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Note : On peut aussi directement afficher une valeur retournée par une fonction comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("Longueur = %d\n", strlen("Ma chaîne"));
    L'expression strlen("Ma chaîne") prend pour valeur la longueur de la chaîne (valeur de retour de la fonction strlen(), cette valeur est de type int). On peut ensuite soit affecter cette valeur à une variable (voir exemple de ram-0000), soit directement mettre cette expression en paramètre d'une fonction (comme printf() par exemple) du moment que le paramètre ou la variable est du même type que cette valeur de retour.

    Après, il existe un type de fonction un peu particulier que l'on appelle les procédures (elles sont de type void en C comme pour d'autres langages). Ces fonctions ne retournent aucune valeur, on ne peut donc pas affecter l'expression d'une procédure dans une variable ou la mettre en paramètre.

    Exemple :

    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
    # include <stdio.h>
     
    /* Une fonction de type int */
    int carre (int nb)
    {
           return (nb*nb);
    }
     
    /* Une procédure */
    void carre2 (int nb)
    {
           printf ("%d", (nb*nb));
    }
     
    /* Fonction principale */
    int main (void)
    {
            int nb = 2;
            /* affectation de la valeur retournée d'une fonction dans une variable */
            nb = carre (nb); /* nb vaudra 2*2 = 4 */
            printf ("%d", nb); /* affichera 4 */
     
            /* affichage de la valeur retournée par une fonction */
            printf ("%d", carre(nb)); /* affichera 4*4 = 16 */
     
            /* exécution de la procédure */
            carre2 (nb); /* affichera 4*4 = 16 */
     
            return 0;
    }
    Cordialement,
    Idriss

  4. #4
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    et surtout n'oublis pas que toutes les expressions en C ont pour
    résultat : 1) un type (ici int car la fonction strlen(char *) renvoie un entier)
    et 2) une valeur (la longueur de la chaine)

    C'est à toi de décider ce que tu va en faire !!

Discussions similaires

  1. Question au sujet des crochets pour les listes
    Par LinuxUser dans le forum Prolog
    Réponses: 7
    Dernier message: 28/08/2008, 00h01
  2. question au sujet des threads
    Par Portanoo dans le forum Général Python
    Réponses: 1
    Dernier message: 31/07/2008, 17h29
  3. Questions au sujet des archives et des packages
    Par lecharcutierdelinux dans le forum Administration
    Réponses: 17
    Dernier message: 15/06/2007, 09h14
  4. Questions au sujet des activex
    Par Sonic dans le forum VB.NET
    Réponses: 1
    Dernier message: 14/04/2007, 12h32

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