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 :

Je voudrais copier la valeur d'une variable pointeur dans une case d'un tableau


Sujet :

C

  1. #1
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut Je voudrais copier la valeur d'une variable pointeur dans une case d'un tableau
    Bonjour tout le monde,

    J'ai une variable de type pointeur qui contient l'adresse de la première tabulaiton + 1 caractère.

    C'est à dire que la variable contient l'adresse du premièr caractère se trouvant après la tabulation.

    J'aimerais, tant que ce n'est pas à nouveau une tabulation (code ASCII 9) copier la lettre actuel du tableau dans l'autre.

    J'ai utilisé strcpy mais j'ai un problème de violation de mémoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	char* PremiereLettre = strchr(Ligne,9); // cherche le premier caractère de tabulation et renvoie l'adresse de cette tabulation dans la varaible PremiereLettre.
    PremiereLettre = PremiereLettre + 1; J'incrémente PremiereLettre de 1 pour aller au caractère suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	while(*PremiereLettre !=9)  //tant que la valeur la valeur de PremiereLettre est différente de tabulation
    	{
    		strcpy(NomP,PremiereLettre); je copie la lettre ici, mais ça ne fonctionne pas.
    
    		NomP++;PremiereLettre++; J'incrémente NomP et PremiereLettre
    
    
    	}
    Sauriez-vous me dire ce qui n'est pas correct svp ?

    Merci d'avance pour votre aide.

    beegees

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    2 choses :

    • d'une part tu n'as pas alloué la mémoire dans Nom
    • d'autre part, strcpy copie la CHAINE démarrant à l'adresse donnée et finissant au premier caractère '\0'..


    Pour copier caractère par caractère c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    *NomP++ = *PremiereLettre++ ;
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Merci pour ta réponse souviron.

    En effet, j'avais oublié d'alloué de la mémoire pour ma variable NomP, chose faite

    char NomP[25];

    OK pour strcpy et merci pour cette info que j'avais oublié.

    Si je fais ceci :

    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
    void	DiviserLigne(char* Ligne)
    {
     
    	char NomP[25];
    	printf("Ligne reçue par la fonction %s",Ligne);
     
    	char* PremiereLettre = strchr(Ligne,9);
     
    	PremiereLettre = PremiereLettre + 1;
     
     
    	while(*PremiereLettre !=9)
    	{
    		*NomP++ = *PremiereLettre++;
     
     
    	}
    }
    J'obtiens ça :
    error C2105: '++' needs l-value
    Qu'en penses-tu ?

    Merci encore.
    beegees

  4. #4
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Re-salut,

    J'ai trouvé une solution en initialisant un i à 0 et en incrémentant de 1 le i jusqu'à ce que le caractère actuel soit égal à 9.

    Je mets dans MotP[i] le caractère lu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	int i = 0;
    	while(*PremiereLettre !=9)
    	{
    		NomP[i] = *PremiereLettre++;
     
    		i++;
     
     
    	}
    Avait-il une autre manière de faire étant donné que j'ai initialisé MotP[25] ?

    Merci encore pour votre aide.

    beegees

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par beegees Voir le message
    char NomP[25];
    ...
    *NomP++ = *PremiereLettre++;
    [/CODE]
    J'obtiens ça :
    error C2105: '++' needs l-value
    NomP, étant un identificateur de tableau, n'est pas modifiable (et ne peut être incréménté, décrémenté ou placé à gauche du signe =)
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  6. #6
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par beegees Voir le message
    Re-salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	int i = 0;
    	while(*PremiereLettre !=9)
    	{
    		NomP[i] = *PremiereLettre++;
    		i++;
    	}
    Avait-il une autre manière de faire étant donné que j'ai initialisé MotP[25] ?
    Dans l'esprit de ton code d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	char * p = NomP;
    	while(*PremiereLettre !=9) *p++ = *PremiereLettre++;
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Membre éprouvé
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Points : 1 277
    Points
    1 277
    Par défaut
    Un super grand merci pour ces explications Diogene.

    Cela va beaucoup me servir.

    Bonne soirée.

    beegees

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/06/2009, 10h54
  2. [PHP-JS] Récupérer une variable JS dans une variable PHP
    Par Perceuse-Killer dans le forum Langage
    Réponses: 2
    Dernier message: 07/02/2008, 15h34
  3. Réponses: 1
    Dernier message: 20/04/2007, 09h12
  4. [PHP-JS] mettre une variable javascript dans une variable php
    Par Mounr dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/04/2007, 09h09
  5. récupérer une variable javascript dans une variable java
    Par tx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2006, 17h55

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