void ident(char tab[])//fonction qui test les mot et affiche msg si vrai { int j,p,k,i=0,state;char ch[]=" ";char str[]=" "; k=strlen(tab); // pour avoir la taille max du tableau do { state=0; if((tab[i]>='a')&&(tab[i]<='z' ))//en test si la première case s'est une lettre { while((tab[i]!=' ')&&( (( tab[i]>='0')&&(tab[i]<='9'))||((tab[i]>='a')&&(tab[i]<='z'))))//en test si les autre case de même mot est apertient [a-z][0-9] { ch[p]=tab[i];//on lit caractere par caractere est enregistrer dans un autre tableau strcat(str,ch); i=i+1; } j=0; while(j<11) { if(strcmp(str,mocl[j])==0)//la en test si l'ident est un mot clé ou nn {printf("%s est un mot cle\n",str); state=1; } else j=j+1; } i=i-1; if(state!=1) printf ("%s est un identificateur\n",str); } i=i+1; }while (i<k); }
void ident(char tab[]) {char moc [11][8]={"if","for","do","else","main","while","main","include","switch","int","case"}; int j,p=0,k,i=0,state;char ch[]=" ";char str[100];char x[]=" "; k=strlen(tab); do { state=0; if((tab[i]>='a')&&(tab[i]<='z' )) { strcpy(str,x); if (tab[i-1]>='0'&& tab[i-1]<='9') printf("%c%c--->ID INCORRECTE (debut avec un chiffre)\n",tab[i-1],tab[i]); else{ while((tab[i]!=' ')&&( (( tab[i]>='0')&&(tab[i]<='9'))||((tab[i]>='a')&&(tab[i]<='z')))) { ch[0]=tab[i]; strcat(str,ch);/*Concatenation des lettres de chaque mot du tableau et leur mise dans str*/ i=i+1; } j=0; while(j<11)//le problème c la il test le mot si est un mot clé ou nn si oui il s'affiche "est un mot clé sinon ident mais il sa marche pas { if(strcmp(str,moc[j])==0) {printf("%s est un mot cle\n",str); state=1; } else j=j+1; } i=i-1; if(state!=1) printf ("%s est un identificateur\n",str);} } i=i+1; }while (i<k); }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionisdigit(); //Decimal digit (0 ? 9). isalnum(); //Alphanumeric (A ? Z, a ? z, or 0 ? 9). isalpha(); //Alphabetic (A ? Z or a ? z). __iscsym(); //Letter, underscore, or digit. isspace(); //White-space character (0x09 ? 0x0D or 0x20).