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