高玺(源文件).c

来自「很好用,请指教.可能还有一些错误请大家指出来,我会用心再改的,谢谢.」· C语言 代码 · 共 297 行

C
297
字号
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int flag=0;
int i;
int k;
char cch;
char bchar;
char str[100];
char t;
FILE *fp;

void Pushback(char c)
{
	bchar=c;
	 flag=1;
}

char GetC( )
{
	  if(flag==1)
	  {
		  flag=0;
		  return bchar;
	  }
        t=getc(fp);
	  if(t=='\n'||t=='\t'||t=='\r') 
          t=' ';
	  return t;
}

int SearchKey( )
{
      
	char StrToken[50][10]={"auto","break","case","char","const",
		"continue","default","do","double","else","enum","extern",
		"float","for","goto","if","int","long","main","printf","register","return","scanf",
            "short","signed","sizeof","static","struct","switch",
		"typedef","union","unsigned","void","volatile","while"};
	for(i=0;i<50;i++)
	  {
	  if(strcmp(StrToken[i],str)==0)	  
	    return i;	  
	  }
	  return 0;
}
	
void GetNextWord( )
{
      int k=0;
      int x;
	cch=GetC();
	while(cch==' ')
	 {
		 cch=GetC( );
	 }
	str[0]=cch;
	if((cch>='a'&&cch<='z')||(cch>='A'&&cch<='Z'))
	{
		
	    str[++k]=cch;
	    cch=GetC( );
	    while((cch>='a'&&cch<='z')||(cch>='A'&&cch<='Z')||
			(cch>='0'&&cch<='9'))
		{
			str[k++]=cch;
			cch=GetC( );
		}
	    str[k]='\0';
	    Pushback(cch);
	    if(SearchKey( )==0)
		printf("(2000 ,%s )",str);
          else
            printf("(10%d ,%s )",i,str);
      }
	else if(cch<='9'&&cch>='0')
	{
	    while(cch<='9'&&cch>='0')
		cch=GetC( );
	    if(cch=='E'||cch=='D')
		cch=GetC( );
	    if(cch=='+'||cch=='-')
		{
		    cch=GetC( );
		    if(cch<='9'&&cch>='0')
			cch=GetC( );
		    while(cch<='9'&&cch>='0')
			cch=GetC( );
		    Pushback(cch);
		    printf("(3000 )");
		}
		else if(cch<='9'&&cch>='0')
		{
		    while(cch<='9'&&cch>='0')
			cch=GetC( );
		    Pushback(cch);
		    printf("(3000 )");
		}
		else if(cch=='.')
		{
		    while(cch<='9'&&cch>='0')
			cch=GetC( );
		    if(cch=='E'||cch=='D')
			cch=GetC( );
		    if(cch=='+'||cch=='-')
		    {
			cch=GetC( );
			if(cch<='9'&&cch>='0')
			    cch=GetC( );
			while(cch<='9'&&cch>='0')
			    cch=GetC( );
			Pushback(cch);
			printf("(3000 )");
		}
		else if(cch<='9'&&cch>='0')
		{
		    while(cch<='9'&&cch>='0')
		        cch=GetC( );
		    Pushback(cch);
		    printf("(3000 )");
		}
		else 
                Pushback(cch);
		printf("(3000 )");
		}
	}
	else 
	{
	    switch(cch)
	    {
	        case '+':
              {
                  cch=GetC( );
			switch(cch)
	            {
                      case '+':{printf("(4001 ,++ )");break;}
                      case '=':{printf("(4002 ,+= )");break;}
		          default:{Pushback(cch);
					 printf("(4003 ,+ )");break;}
	            }
		      break;
              }
		  case '-':
              {
                  cch=GetC( );
			switch(cch)
		      {
                      case '-':{printf("(4004 ,-- )");break;}
                      case '=':{printf("(4005 ,-= )");break;}
                      case '>':{printf("(4006 ,-> )");break;}
			    default:{Pushback(cch);
					 printf("(4007 ,- )");break;}
			}
                  break;
              }
		  case '*':
              {
                  cch=GetC( );
			if(cch=='=') 
                      printf("(4008 ,*= )");
			else 
                  {
			    Pushback(cch);
			    printf("(4009 ,* )");
			}
			break;
              }
		  case '/':
              {
                  cch=GetC( );
			if(cch=='=') 
                      printf("(4010 ,/= )");
			else 
                  {
			    Pushback(cch);
			    printf("(4011 ,/ )");
			}
			break;
		  }					 
		  case '<':
              {
                  cch=GetC( );
			switch(cch)
			{
			    case'=':{printf("(4012 ,<= )");break;}
			    case'<':
                      {
                          cch=GetC( );
				  if(cch=='=')
                              printf("(4013 ,<<= )");
				  else 
                          {
					Pushback(cch);
					printf("(4014 ,<< )");
				  }
                          break;
                      }
			    default:{Pushback(cch);
					 printf("(4015 ,< )");break;}
			}
                  break;
		  }   					 
		  case '>':
              {
                  cch=GetC( );
			switch(cch)
			{
			    case'=':{printf("(4016 ,>= )");break;}
                      case'>':
                      {
                          cch=GetC( );
				  if(cch=='=')
                              printf("(4017 ,>>= )");
				  else 
                          {
					Pushback(cch);
					printf("(4018 ,>> )");
                          }
                          break;
                      }
			    default:{Pushback(cch);
				       printf("(4019 ,> )");
					 break; }
			 }
                   break;
		  }			
              case '=':
              {
                  cch=GetC( );
			if(cch=='=') 
                      printf("(4020 ,== )");
			else 
                  {
			    Pushback(cch);
			    printf("(4021 ,= )");
			}
			break;
		  }			
              case '%':
              {
                  cch=GetC( );
			if(cch=='=') 
                      printf("(4022 ,%= )");
			else 
                  {
			    Pushback(cch);
			    printf("(4023 ,% )");
			}
			break;
		  }				
		  case '(':
              {
                  printf("(5001 ,( )");
                  break;
		  }			
              case ')':
              {
                  printf("(5002 ,) )");
                  break;
              }
		  case '{':
              {
                  printf("(5003 ,{ )");
                  break;
              }
		  case '}':
              {
                  printf("(5004 ,} )");
                  break;
              }
		  case ';':
              {
                  printf("(5005 ,; )");
                  break;
              }
              case ',':
              {
                  printf("(5006 ,, )");
                  break;
              }      
	    }
     }
}
       			
void main()
{
	if((fp=fopen("char.txt","r"))==0)
		printf("Cannot open this file\n!");
      else
        { while(cch!='#')
           {
	        GetNextWord( );
	        printf("\n");
           }
        }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?