المشاركة الأصلية كتبت بواسطة عبدالرزاق2010
#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;
}
|