#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
char moc [11][19]={"if","for","do","else","main","while","main","in clude","int","switch","case"};
int k;int p=0;
char ch[1];int state;char cha;
FILE *F;char tab[500];int i=0;char str[256];
int c;int j;
if(NULL==(F=fopen("fich.txt","r")))
return EXIT_FAILURE;
/*la lecture du fichier a compiler et le mettre dans le tableau tab*/
while((c=fgetc(F))!=EOF )
{
tab[i]=c;
printf("%c",tab[i]);
i=i+1;
}
/*k indique le nombre du caractere du fichier */
k=strlen(tab);
i=0;
do
{ state=0;
if((tab[i]>='a')&&(tab[i]<='z' ))
{
while((tab[i]!=' ')&&( (( tab[i]>='0')&&(tab[i]<='9'))||((tab[i]>='a')&&(tab[i]<='z'))))
{
ch[p]=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)
{
if(strcmp(str,moc[j])==0)
{printf("%s est un mot cle\n",str);
state=1;
break;
}
else
j=j+1;
}
i=i-1;
if(state!=1)
printf ("%s est un identificateur\n",str);
}
else
if((tab[i]>='0')&&(tab[i]<='9'))
{
while ((tab[i]!=' ')&&(tab[i]>='0')&&(tab[i]<='9'))
{
ch[p]=tab[i];
strcat(str,ch);
i=i+1;
}
if (( tab[i]>='a')&&(tab[i]<='z'))
{
while((tab[i]!=' ')&&((( tab[i]>='a')&&(tab[i]<='z'))||((tab[i]>='0')&&(tab[i]<='9'))))
{
ch[p]=tab[i];
strcat(str,ch);
i=i+1;
}
printf("%s erreur",str);
i=i-1;
}
else
{
printf("%s est un nombre",str);
i=i-1;
}
}
else
{
cha=tab[i];
switch (cha)
{
case ';':
printf("%c : est un caractere special\n",cha);
break;
case '(':
printf("%c : est un caractere special\n",cha);
break;
case ')':
printf("%c : est un caractere special\n",cha);
break;
case '{':
printf("%c : est un caractere special\n",cha);
break;
case '[':
printf("%c : est un caractere special\n",cha);
break;
case ']':
printf("%c : est un caractere special\n",cha);
break;
case '}':
printf("%c : est un caractere special\n" ,cha);
break;
case '"':
printf("%c : est un caractere special\n",cha);
break;
case ',':
printf("%c : est un caractere special\n",cha);
break;
case '+':
printf("%c : operateur d'adition\n",cha);
break;
case '-':
printf("%c : operateur de soustraction\n",cha);
break;
case '*':
printf("%c : operateur de multiplication\n",cha);
break;
case '/':
printf("%c : operateur de division\n",cha);
break;
case '<':
printf("%c : operateur logique inferieur\n",cha);
break;
case '>':
printf("%c : operateur logique superieur\n",cha);
break;
case '#':
printf("%c : caractere special \n",cha);
break;
case '.':
printf("%c : caractere special \n",cha);
break;
case '&':
printf("%c : caractere special \n",cha);
break;
case '=':
printf("%c : caractere special \n",cha);
break;
case '%':
printf("%c : caractere special \n",cha);
break;
}
}
i=i+1;
memset (str, 0, sizeof (str));/*inisialiser la chaine de caracteres str a 0*/
}
while(i<k);
system("pause");
return 0;
}