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 :

remetre a zero des structures dans une autre fonction


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut remetre a zero des structures dans une autre fonction
    Salut tout est dans le titre voici un bou de code explicatif merci

    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
    void myfunction(int l)
    {
    static int i = 9;
    static char buff[1024] = strdup("lol"); 
    static int j = 10;
     
    other_f(/* mes static */);
     
    printf("%d %s %d\n",i,buff,j);
     
    /*
    je devrais avoir :
    i = 0;
    buff = NULL;
    j = 0;
    */
    }

  2. #2
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    Tu passes un pointeur à ta fonction dans laquelle tu fais un memset. Apprendre à écrire français serait bien sympathique aussi.

  3. #3
    Membre très actif
    Avatar de sourcilpower
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2011
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2011
    Messages : 128
    Billets dans le blog
    2
    Par défaut
    je ne vois pas comment faire enfaite un exemple serais le bien venu

  4. #4
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    alors un moyen simple pour apprendre à programmer en C est du suivre des tutoriels pour apprendre le C. C'est généralement pas très long, tu y vas à ton rythme et tu apprends plein plein de choses.

    Bonne lecture et bon apprentissage

  5. #5
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 487
    Par défaut
    Bonjour,

    Cette ligne-ci est incorrecte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static char buff[1024] = strdup("lol");
    strdup est une fonction qui est évalué à l'exécution et qui renvoie un pointeur. Soit tu fais directement « static char buff[1024] = "lol"; » pour initialiser ton tableau au départ, soit tu fais « strdup (buff,"lol"); » après l'avoir déclaré.

    Ensuite, il n'y a pas de structure dans le code que tu nous présentes.

    Pour le reste, comme on te l'a dit, tes variables ont beau être statiques, elle ne sont visibles que dans le bloc où elles ont été déclarées, comme des variables locales ordinaires. Il faut donc passer leurs adresses en mémoire à ta fonction : « other_f(&i,buff,&j); ». Note que je n'ai pas appliqué de « & » à « buff » car c'est un tableau. Si j'invoque le nom du tableau, il me donne automatiquement son adresse.

    Il en reste que ça pourrait être justifié dans certains cas où tu fais une fonction d'initialisation commune à différents contextes mais dans le cas qui t'intéresse, je pense que c'est une approche très sale : à mon avis, tu cherches à utiliser des références comme en C++ mais qui n'existent pas en C.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour,
    Sachant que toute variable possède une adresse, transmettre celle-ci via un paramètre convenablement typé pour accepter pour valeur une telle adresse permettrait de modifier ce qui est désigné par la dite adresse.

    Bonne continuation

  7. #7
    Membre Expert
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    872
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 872
    Par défaut
    sourcilpower est tellement sympa qu'il a mis un -1 à tous ceux qui ont tenté de l'aider. Comportement fort étrange quand même.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 13/11/2007, 22h23
  2. Creation d'un formulaire permettant d'ajouter des information dans une autre fenêtre
    Par @rno0059 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/06/2007, 07h47
  3. [Formulaires] Traitement des données dans une autre page...
    Par sekiryou dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 04/03/2006, 09h08
  4. [PHP-JS] Traitement des données dans une autre page...
    Par sekiryou dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2006, 09h06
  5. Réponses: 4
    Dernier message: 19/09/2005, 15h59

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