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 :

Ecriture de variable sur pointeur


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut Ecriture de variable sur pointeur
    Bonjour,

    Voici ma question, que signifie *lign = 0 et *colonn = 1 dans la fonction void suivante.
    On utilise ces 2 variables dans cette fonction mais es-ce un intiger ou un char.
    On dit que c'est un pointeur mais sur quoi es-ce que je pointe.
    Dans cette fonction je compte le nombre de ligne et de colonne d'un fichier csv.
    Ou alors es-ce que c'est un booléen.

    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
    void fct_lignes_colonnes_csv(char* fichie, int *lign, int *colonn)
    {
        int caractereActuel = 0;
        int findeligne=0;
     
        *lign=0;
        *colonn=1;
     
        FILE* fichier = NULL;
        fichier = fopen("liste scooters.csv", "r+");
     
        if (fichier != NULL)
        {
            do
            {
                caractereActuel = fgetc(fichier);
                if(caractereActuel==';' && findeligne<1)
                {
                    (*colonn)++;
                }
                if(caractereActuel=='\n')
                {
                    findeligne++;
                    (*lign)++;
                }
            }
            while (caractereActuel != EOF);
            fclose(fichier);
        }
        else
        {  
            printf("Fichier introuvable");
            exit(0);
        }
    }
    Merci d'avance pour votre réponse.

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    639
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 639
    Par défaut
    Bonjour,

    si vous êtes un peu perdu, voici des explications sur le "passage par pointeur" :




    et si vous êtes complètement perdu, il faut revoir les bases d'abord :


  3. #3
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    *lign = 0 et *colonn = 1
    Cela signifie que ce que pointe lign , sera a zéro et colonn a 1.
    De façon plus explicite imaginant que lign fait 5000 , ben il écrira a adresse 5000 (et mettra ta valeur 0) , de même pour colonn.
    Pour le type tout les pointeurs feront 32 ou 64 bits en général (ça dépend des machines) , pour le type de pointeurs (genre char* ou int*) cela sert a comment on les lis/écris , on ne lit/écris pas la même façon un char que un int en général (sauf si on a un int de 1 octet).

    Personne pourra te dire sur quoi tu pointe exactement , ça dépend de ce qui mis en argument , mais c'est évidant que int *lign, int *colonn ont été mis en pointeur pour pouvoir les modifier pendant cette fonction.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 464
    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 464
    Par défaut
    Bonjour,

    Citation Envoyé par Kumral Voir le message
    Bonjour,

    Voici ma question, que signifie *lign = 0 et *colonn = 1 dans la fonction void suivante.
    On utilise ces 2 variables dans cette fonction mais es-ce un intiger ou un char.
    On dit que c'est un pointeur mais sur quoi es-ce que je pointe.
    Regarde bien le début de ton code : ces pointeurs sont les paramètres de ta fonction.

    Dans l'entête de ta fonction, il est écrit « int *lign » et « int *colonn », donc on sait que ces pointeurs pointent des entiers. On procède de cette façon pour pouvoir passer à ta fonction des variables qui lui sont extérieures tout en lui permettant de les modifier en retour.

  5. #5
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Kumral Voir le message
    On dit que c'est un pointeur mais sur quoi es-ce que je pointe.
    Bonjour

    Tu pointes sur l'adresse que ta fonction à reçu. Et dans ce cas tu dois partir du principe que l'adresse reçue par la fonction est correcte c'est à dire que cette adresse est valide et correspond à une variable de type "int"

    Exemple simple

    Code c : 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
    void maj(int *pt, int val)
    {
        // On stocke la valeur reçue à l'adresse reçus
        *pt=val;
    }
     
    int main()
    {
        int i, j, k;
        maj(&i, 10);
        maj(&j, 20);
        maj(&k, 30);
        printf("i vaut %d\n", i);
        printf("j vaut %d\n", j);
        printf("k vaut %d\n", k);
    }

    Dans chacun des 3 cas, la fonction reçoit une adresse correcte (l'adresse d'une variable de type "int") donc elle peut y stocker les valeurs qu'elle veut...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  6. #6
    Membre actif
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 29
    Par défaut
    Merci CodeurPlusPlus pour ces vidéos très bien réalisé.

    Obsidian, oui, c'est bien ça, je doit faire le lien avec une autre fonction menu ou j'utilise la fonction fct_lignes_colonnes_csv.
    Merci de votre réponse, à présent je suis sur que je déclare ces 2 pointeurs dans
    le seul but de données à ma fonction menu l'emplacement de ces 2 pointeurs
    ce qui me permet de faire le lien via l'adresse de ces 2 pointeurs entre 2 fonctions distincts.

    C'est pour avoir l'emplacement de ces 2 paramètres que je déclare 2 pointeurs.
    C'est bien ça qui réalise le lien entre 2 fonctions distincts.

    Merci de votre réponse.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/10/2008, 12h29
  2. Variable sur plusieurs ligne
    Par krfa1 dans le forum ASP
    Réponses: 5
    Dernier message: 20/04/2006, 10h26
  3. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 18h18
  4. pointeur sur pointeur
    Par gaut dans le forum C
    Réponses: 3
    Dernier message: 01/11/2005, 21h30
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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