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 :

Recuperation de pointeur


Sujet :

C

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut Recuperation de pointeur
    salut,

    J'ai une fonction qui recoit en parametres (entre autre ) un pointeur sur caractere. Il effectue des op�ration sur ce pointeur(deplacement ). Je souhaite recuperer ce pointeur modifier. Mon probl�me c'est que la fonction renvoi un int (dont j'ai aussi besoin).

    Comment faire?

    merci de votre aide

  2. #2
    Expert confirm�
    Avatar de Swo�g
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par d�faut
    Salut

    Tu peux faire passer un pointeur sur ce pointeur ^^
    R�dacteur "�clectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les R�gles du Forum - Mon Site Web sur DVP.com (D�veloppement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne r�pondrai � aucune question technique via MP, MSN ou Skype : les Forums sont l� pour �a !!! Merci de me demander avant de m'ajouter � vos contacts sinon je bloque !
    pensez � la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par Nalido
    J'ai une fonction qui recoit en parametres (entre autre ) un pointeur sur caractere. Il effectue des op�ration sur ce pointeur(deplacement ). Je souhaite recuperer ce pointeur modifier. Mon probl�me c'est que la fonction renvoi un int (dont j'ai aussi besoin).

    Comment faire?
    Un peu comme le deuxi�me param�tre de strtol() ?

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut
    Citation Envoy� par Emmanuel Delahaye
    Un peu comme le deuxi�me param�tre de strtol() ?
    Exactement.
    En fait je recupere une valeur numerique et un pointeur sur char.
    J'effectue des operations sur la valeur numerique et sur le pointeur.
    La fnction retourne la valeur numerique odifi�e mais je ne voit pas comment rcupere mon pointeur modifi�??

  5. #5
    Expert confirm�
    Avatar de Swo�g
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par d�faut
    Citation Envoy� par Swo�g
    Salut

    Tu peux faire passer un pointeur sur le pointeur que tu veux modifier^^
    R�dacteur "�clectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les R�gles du Forum - Mon Site Web sur DVP.com (D�veloppement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne r�pondrai � aucune question technique via MP, MSN ou Skype : les Forums sont l� pour �a !!! Merci de me demander avant de m'ajouter � vos contacts sinon je bloque !
    pensez � la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  6. #6
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par Nalido
    Exactement.
    En fait je recupere une valeur numerique et un pointeur sur char.
    J'effectue des operations sur la valeur numerique et sur le pointeur.
    La fnction retourne la valeur numerique odifi�e mais je ne voit pas comment rcupere mon pointeur modifi�??
    Tu fais exactement comme avec strtol()...

    Essaye et poste le code si tu as un probl�me.

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut
    Je ne maitrise pas tres bien les pointeur aurait tu un exemple pour illustrer stp

  8. #8
    Expert �minent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retrait�
    Inscrit en
    D�cembre 2003
    Messages
    14 512
    D�tails du profil
    Informations personnelles :
    �ge : 68
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Retrait�

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 14 512
    Par d�faut
    Citation Envoy� par Nalido
    Je ne maitrise pas tres bien les pointeur aurait tu un exemple pour illustrer stp
    Ben non. C'est � toi de te creuser la cervelle. SI tu ne sais pas utiliser les pointeurs, relis ton cours. Le principe est de passer l'adresse de la variable � modifier. Pour�a, on utilise un param�tre pointeur du m�me type qui permet d'acc�der � la variable alors qu'on est dans la fonction. C'est le B.A. BA du langage C.

    Essaye un truc simple :

    Soit :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    int i = 1;
    inc (&i);
    /* i vaut 2. */
    Comment �crire inc() ?
    • Quelle interface ? (not� 4/10)
    • Quel code, (not� 6/10)

  9. #9
    Expert confirm�
    Avatar de Swo�g
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par d�faut
    un truc qui sert un peu � rien mais bon :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    int alloc_(void** ptr, unsigned size)
    {
       if((*ptr = malloc(size)) == NULL) return 0;
       return 1;
    }
    pour l'appeller, par exemple :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    int* T;
    if(alloc_(&T, sizeof(int)*5) == 1) printf("Allocation OK");
    else printf("Bad_Alloc");
    �a modifie T et en m�me temps �a renvoie un entier...
    bon, en m�me temps cette fonction sert ABSOLUEMENT � rien...
    R�dacteur "�clectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les R�gles du Forum - Mon Site Web sur DVP.com (D�veloppement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne r�pondrai � aucune question technique via MP, MSN ou Skype : les Forums sont l� pour �a !!! Merci de me demander avant de m'ajouter � vos contacts sinon je bloque !
    pensez � la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut
    merci j'essaye ca on verra ce que �a donne...

  11. #11
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut
    J'ai essayer d'appliquer ce que j'ai pu lire ici et l� et j'ai deux warning que je ne comprend pas. Et en plus mon programme plante.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
     
    double essai(int     val01,  double   val02,  char     **ptr) {
           if (Val01 == 1) {
                    return val1;
            }
           switch (*ptr[0]) {
           case 'a':
             val02*= 1;
             ++*ptr;
           case 'b':
             val02*= 2;
             ++*ptr;
           }
     
    return val02;
    }
     
    short essappel( char*   Nal1,
                         char*   Nal2)
    {
        int    r1 = 0;
        int    r2 = 0;    
        double  val1  = 0;
        double  val2 = 0;
        char    *Li1;
        char    *Li2;
        char    *resscan1; 
        char    *resscan2;
     
     
        Li1 =Nal1;
        Li2= Nal2;
     
                r1 = sscanf(Li1, "%le%s", &val1, &resscan1);
                r2 = sscanf(Li2, "%le%s", &val2, &resscan2);  
     
     
                if (r1 == r2) {            
                    val1 = essai(r1, val1, &resscan1);
                    val2 = essai(r2, val2, &resscan2);
                    Li1 = strstr (Li1, &resscan1);
    ...
     
    {
    j'espere que ce bout de code suffit pour illustre mon probleme. Le programme plante lors de l'appel de la focntion essai mais les warning concerne la fonction strchr???

    les warning sont:

    function' : 'const char *' differs in levels of indirection from 'char ** '
    warning C4024: 'strstr' : different types for formal and actual parameter 2

    merci de votre aide

  12. #12
    Membre chevronn� Avatar de Mayti4
    Inscrit en
    F�vrier 2004
    Messages
    442
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2004
    Messages : 442
    Par d�faut
    r1 = sscanf(Li1, "%le%s", &val1, &resscan1);
    r2 = sscanf(Li2, "%le%s", &val2, &resscan2);
    Il ne faut pas mettre de '&' ici, c'est d�j� des pointeurs.

    Tu n'as allou� ni resscan1 ni resscan2.

  13. #13
    Expert confirm�
    Avatar de Swo�g
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par d�faut
    le code que tu as donn� ne peut pas compiler (suffit de regarder les trois premi�res lignes de la fonction essai...

    donnes-nous le VRAI code s'il te pla�t
    R�dacteur "�clectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les R�gles du Forum - Mon Site Web sur DVP.com (D�veloppement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne r�pondrai � aucune question technique via MP, MSN ou Skype : les Forums sont l� pour �a !!! Merci de me demander avant de m'ajouter � vos contacts sinon je bloque !
    pensez � la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    64
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 64
    Par d�faut
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    double essai(int     val01,  double   val02,  char     **ptr) {
           if (Val01 < 1) {
                    return val1;
            }
           switch (*ptr[0]) {
           case 'a':
             val02*= 1;
             ++*ptr;
             break;
           case 'b':
             val02*= 2;
             ++*ptr;
             break;
           }
     
    return val02;
    }
     
    short essappel( char*   Nal1,
                         char*   Nal2)
    {
        int    r1 = 0;
        int    r2 = 0;    
        double  val1  = 0;
        double  val2 = 0;
        char    *Li1;
        char    *Li2;
        char    *resscan1; 
        char    *resscan2;
     
     
        Li1 =Nal1;
        Li2= Nal2;
     
                r1 = sscanf(Li1, "%le%s", &val1, &resscan1);
                r2 = sscanf(Li2, "%le%s", &val2, &resscan2);  
     
     
                if (r1 == r2) {            
                    val1 = essai(r1, val1, &resscan1);
                    val2 = essai(r2, val2, &resscan2);
                    Li1 = strstr (Li1, &resscan1);
    ...
     
    {
    le code est long ce sont seulement ces deux fonctions qui m'embete

  15. #15
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par Swo�g
    suffit de regarder les trois premi�res lignes
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    double essai(int     val01,  double   val02,  char     **ptr) {
           if (Val01 < 1) {
                    return val1;
    Le monsieur a dit le VRAI code...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 10/04/2009, 10h24
  2. R�ponses: 0
    Dernier message: 22/10/2007, 11h46
  3. R�ponses: 7
    Dernier message: 01/06/2007, 17h36
  4. R�ponses: 2
    Dernier message: 06/05/2007, 12h52
  5. R�ponses: 5
    Dernier message: 12/06/2006, 14h56

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