π
<-
Chat plein-écran
[^]

[Résolu] Problème compilation - strtok()

:32ti73: :32ti73e: :32ti73e2: :32ti76f: :32ti80: :32ti81: :32ti82: :32ti85: :32ti86: :32ti82s: :32ti82sf: :32ti82sfn: :32ti83: :32ti83p: :32ti83pb: :32ti83pr: :32ti83pfr: :32ti83pse: :32ti84p: :32ti84pse: :32ti84ppse: :32ti84pfr: :32ti84pcse: :32ti83pfrusb: :32ti82p: :32ti82a: :32ti84pce: :32ti83pce:

[Résolu] Problème compilation - strtok()

Message non lude newprog_creator » 27 Juil 2016, 20:41

Bonjour,
Je me permets de vous resolliciter pour un problème de compilation en c.
J'essaye de voir si je peux faire un compilateur newprog CE. Pour cela j'utilise la fonction strtok().
Ci-dessous un extrait du code (qui n'a pas trop de logique pour le moment) :

Code: Tout sélectionner
/* Keep these headers */
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <tice.h>

/* Standard headers - it's recommended to leave them included */
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

/* CE Keypad C Library */
#include <lib/ce/keypadc.h>
#include <lib/ce/graphx.h>

/* Shared library headers -- depends on which ones you wish to use */
#include <lib/ce/fileioc.h>

....

const char *operator_str[]={"*","+"};
uint8_t oi;

...

void find_op(char *str)
{
uint32_t slen=0;
uint8_t str1[1000],str2[1000];
strcpy(str1,str);
strcpy(str2,str);
printf1 ("Splitting string \"%s\" into tokens:\n",(uint32_t)str2,0); 
  oi=0;
 
 
  for(oi=0;oi<2;oi++)
  {
   //strcpy(str_op,(const char*)operator_str[oi]);
      str2 = strtok ((char*)str2,&operator_str[oi]);         //L'erreur est ici, c'est la ligne 645
    if(strcmp(str1,str2)==0)
    {
        printf1("No operator of %c\n",(int32_t)operator_str[oi],0);
        continue;
    }
    else
    {
       
    }
    printf1 ("arg1=%s\n",(int32_t)str2,0);
    printf1("arg2=%s\n",(int32_t)strtok (NULL, (const char*)operator_str[oi]),0);
 
  }
  pause();
}
...

Le compilateur indique l'erreur suivante : "MAIN.C (645,13) : ERROR (159) An array is not a legal lvalue
MAIN.C (645,52) : ERROR (171) Argument type is not compatible with formal parameter"

Pouvez-vous m'aider, j'avoue ne pas comprendre l'erreur. Sur les ti68k il y avait des warnings mais pas d'erreurs (enfin, je crois).

Par ailleurs, je voulais savoir si il existe des parseurs "tout fait" pour ce genre de projet. Avec Newprog sur ti68k, c'était le tios qui faisait une grosse partie du travail...

Merci d'avance
Avatar de l’utilisateur
newprog_creatorProgrammeur
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 74.2%
 
Messages: 67
Inscription: 29 Mar 2014, 19:07
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: bac+13

Re: Problème compilation - strtok()

Message non lude Bisam » 28 Juil 2016, 10:18

Tout d'abord, je ne connais pas ce que fait la fonction "strtok"... mais je comprends l'erreur.

Visiblement, la fonction "strtok" doit renvoyer autre chose qu'un objet de type array.
En tout cas, l'erreur exprime que mettre "str2" comme variable recevant une valeur (une "lvalue" pour "left value" dans une assignation) est illégal.
Je ne sais pas vraiment si c'est illégal dans tous les cas ou seulement pour cette fonction... cela fait trop longtemps que je n'ai pas fait de C.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Problème compilation - strtok()

Message non lude newprog_creator » 28 Juil 2016, 16:55

La fonction strtok renvoie un pointeur sur chaine de caractères (donc un array?!).
J'ai changé le type de str2 en le déclarant ainsi :

uint8_t *str2="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";

Mais toujours la meme erreur !

Si qqun pourrait m'aider...
Avatar de l’utilisateur
newprog_creatorProgrammeur
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 74.2%
 
Messages: 67
Inscription: 29 Mar 2014, 19:07
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: bac+13

Re: Problème compilation - strtok()

Message non lude Lionel Debroux » 28 Juil 2016, 17:57

Un indice: quel peut bien être le type de &operator_str[oi], sachant qu'operator_str est const char ** ?
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Problème compilation - strtok()

Message non lude newprog_creator » 28 Juil 2016, 21:49

Merci Lionel Debroux pour l'indice, grâce à lui j'ai trouvé le problème : il ne fallait pas mettre de "*" devant la déclaration de operator_str.
Ca fait longtemps que je n'ai pas pratiqué le C, je me rassure comme ça. Il me semblait juste que pour avoir un tableau de pointeurs, il fallait mettre une étoile devant.
Merci encore !!!
Avatar de l’utilisateur
newprog_creatorProgrammeur
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 74.2%
 
Messages: 67
Inscription: 29 Mar 2014, 19:07
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: bac+13

Re: Problème compilation - strtok()

Message non lude Lionel Debroux » 29 Juil 2016, 07:17

Il fallait plutôt enlever le & :)
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl


Retourner vers Problèmes divers / Aide débutants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 36 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1399 utilisateurs:
>1352 invités
>42 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)