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 :

Isoler valeur pointeur


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Isoler valeur pointeur
    Bonjour,
    Alors voila mon problème je dois pour mon projet recevoir des trames Gcode pour les traduire en mouvement pour un Robot, pour cela je dois isoler ,sur une trames donc Gcode par exemple G00 X50 Y150 Z30, les coordonnées des méthodes, les methodes Gcode commence par GXX et les coordonnée X Y ou Z.

    j'utilise donc strtok avec ' ' comme séparateur et je me retrouve donc avec les truc isoler et les exploite en faisant une boucle et des if mais une fois que j'ai détécté la méthode G00 ( avec un strcmp sur le pointeur )

    je dois encore isoler X50 et ne garder que 50, Y150 et ne garder que 150, et Z30 et ne garder que 30 qui sont des char* puisqu'il vienne de strtok et les mettre dans des int mais comment faire cela ??

    J'espere que jai ete assez claire!

  2. #2
    Membre averti
    Homme Profil pro
    Cadre informatique
    Inscrit en
    Avril 2013
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Cadre informatique

    Informations forums :
    Inscription : Avril 2013
    Messages : 183
    Points : 435
    Points
    435
    Par défaut
    Comme ça, j'aurais dit chaine de caractere -> tableau -> [X][1][5][0] -> tu enleves l'element contenu dans tab[0] et tu repasse dans l'autre sens et hop un décimal ^^

    Bon je sais qu'il y a un lien, mais j'ai jamais vraiment codé ce genre de truc, j'ai toujours eu peur de m'emmeler les pinceaux plus qu'autre chose donc je pense que tu auras une meilleure aide avec les autres.

    Si sa a pu te debloquer au moins pour l'instant, bonne chance

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Re :
    Oue je vais juste essayer de supprimer le premier caractères et on vera , Merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Re
    Comment peut-on supprimer un pointeur par exemple :
    pointeur[0]  pointeur[1]   pointeur[2]
         ↓           ↓             ↓
         X           5             0
    ici je veux juste dégager pointeur[0] juste garder 50

    si je fais &pointeur[0] = &pointeur[1] pointeur vaudra 550.

    mais si je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(*pointeur != NULL){
        // et que ici je décale de 1
    }
    je ne sais pas si cela va marcher!

  5. #5
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    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 : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    La fonction memmove fait très bien ça.

    si je fais &pointeur[0] = &pointeur[1]
    pointeur vaudra 550.
    Très mauvaise idée.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Je ne pense pas qu'il soit nécessaire de faire une copie du tableau vu que le but est de récupérer un int si j'ai bien compris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char * tableau = strtok(...);
    int monEntier = atoi( tableau + 1 ); // il vaut mieux utiliser strtol.
    Sinon, il vaut mieux utiliser strtok_r à la place de strtok.

  7. #7
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Pourquoi se compliquer la vie... moi j'aurais utilisé sscanf():
    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
    #include  <stdio.h>
    #include  <stdlib.h>
     
    int main( void )
    {
    	char *p = "O4968 M216 G20 G90 G54 D200 G40 G50 S2000 M01 T0300 G96 S854 M42 M03 M08 G41 G00 X1.1 Z1.1 T0303 G01 Z1.0 F.05 X-0.002 G00 Z1.1 X1.0 G01 Z0.0 F.05 G00 X1.1 M05 M09 G91 G28 X0 G91 G28 Z0 G90 M215 M30";
    	unsigned int bytes, i = 0;
    	double n;
    	char c;
     
    	while(sscanf(p, " %c%lf %n", &c, &n, &bytes)==2) {
    		printf("%03u> %c %.6g\n", ++i, c, n);
    		p += bytes;
    	}
    	if(*p!='\0') puts("BOOM!");
     
    	return 0;
    }
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 24
    Points : 7
    Points
    7
    Par défaut Re:
    A oue, ca a l'air beaucoup plus simple effectivment jvais essayer MERCI !

    ps : désolés j'etait un peu occupé

Discussions similaires

  1. Problème affichage d'une valeur (pointeur ? )
    Par Stabillo dans le forum C
    Réponses: 8
    Dernier message: 20/09/2013, 14h06
  2. Paramètres de fonction : pointeurs ou valeurs ?
    Par Xandar dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/11/2005, 16h50
  3. Réponses: 3
    Dernier message: 20/09/2005, 08h59
  4. Réponses: 3
    Dernier message: 11/08/2005, 15h54
  5. Echange de valeurs par pointeur et réf
    Par smag dans le forum C++
    Réponses: 6
    Dernier message: 01/03/2005, 18h39

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