⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.c

📁 一、实验目的:编制一个源程序的输入过程
💻 C
字号:
#include   <stdio.h>   
  #include   <string.h>   
  #include   <ctype.h>   
  #include   <malloc.h>   
  #define   N   50   
  #define   M   500   
    
  char   *a[32]={"auto","break","case","char","const","continue","default","do",   
                            "double","else","enum","extern","float","for","goto","if",   
                            "int","long","register","return","short","signed","sizeof","static",   
                          "struct","switch","typedef","union","unsigned","void","while","volatile"};   
  char   *b[13]={"&&","||","++","--","+","-","*","/","=",">=","<=","==","!="};   
  char   *c[10]={"[","]","{","}","(",")",",",";","'"};   
    
  char   scmp(char   *str)                           /*此函数判断单词类型*/   
  {   
        int   i;   
        for(i=0;i<32;i++)   
        {   
              if(strcmp(str,a[i])==0)   
              return   '1';   
        }   
        if(isdigit(str[0]))   
        return   '3';   
        for(i=0;i<13;i++)   
        {   
              if(strcmp(str,b[i])==0)   
              return   '4';   
        }   
        for(i=0;i<10;i++)   
        {   
              if(strcmp(str,c[i])==0)   
              return   '5';   
        }   
        if(!isalnum(str[0]))   
        return   '5';   
        else   return   '2';   
  }   
    
  void   main(void)   
  {   
        FILE   *in,*out,*fp;   
        char   ch,cha,buffer[N],*zhou[M];   
        int   i=0,j=0,k;   
        if((in=fopen("source.txt","r+"))==NULL)   
        {   
              printf("source.txt   can't   open   or   doesn't   exist...\n");   
              getch();exit(0);   
        }   
        if((out=fopen("output.txt","w+"))==NULL)   
        {   
              printf("output   file   can   not   open...\n");   
              getch();exit(0);   
        }   
        /**************************以下是核心代码区**************************/   
        while(!feof(in))   
        {   
              ch=fgetc(in);   
              if(isalpha(ch))                                         /*如果首字符是字母*/   
              {   
                    while(isalnum(ch)&&(i<N))   
                    {   
                          buffer[i++]=ch;   
                          ch=fgetc(in);   
                    }   
                    if(i>=N)   
                    {   
                          printf("the   string   is   too   long...\n");   
                          getch();exit(0);   
                    }   
                    buffer[i]='\0';   
                    zhou[j++]=(char   *)malloc(sizeof(char)*(strlen(buffer)+1));   
                    strcpy(zhou[j-1],buffer);   
                    i=0;   
                    fseek(in,-1L,1);   
              }   
              else   if(isdigit(ch))                             /*如果首字符是数字*/   
              {   
                    while(isdigit(ch)&&(i<N))   
                    {   
                          buffer[i++]=ch;   
                          ch=fgetc(in);   
                    }   
                    if(i>=N)   
                    {   
                          printf("the   digit   is   too   long...\n");   
                          getch();exit(0);   
                    }   
                    buffer[i]='\0';   
                    zhou[j++]=(char   *)malloc(sizeof(char)*(strlen(buffer)+1));   
                    strcpy(zhou[j-1],buffer);   
                    i=0;   
                    fseek(in,-1L,1);   
              }   
              else   if(!isalnum(ch))                               /*如果首字符既不是数字也不是字母的话*/   
              {   
                    if(ch!='\n'&&ch!='   ')   
                    {   
                          if(ch=='>'||ch=='<'||ch=='!')             /*   以下代码实现超前搜索   */   
                          {   
                                if((cha=fgetc(in))=='=')   
                                {   
                                      buffer[i++]=ch;   
                                      buffer[i++]=cha;buffer[i]='\0';   
                                      zhou[j++]=(char   *)malloc(sizeof(char)*3);   
                                      strcpy(zhou[j-1],buffer);   
                                      i=0;   
                                }   
                                else   
                                {   
                                      buffer[i++]=ch;buffer[i]='\0';   
                                      zhou[j++]=(char   *)malloc(sizeof(char)*2);   
                                      strcpy(zhou[j-1],buffer);   
                                      i=0;   
                                      fseek(in,-1L,1);   
                                }   
                          }   
                          else   if(ch=='+'||ch=='-'||ch=='&'||ch=='|'||ch=='=')   
                          {   
                                if((cha=fgetc(in))==ch)   
                                {   
                                    buffer[i++]=ch;buffer[i++]=cha;buffer[i]='\0';   
                                    zhou[j++]=(char   *)malloc(sizeof(char)*3);   
                                    strcpy(zhou[j-1],buffer);   
                                    i=0;   
                                }   
                                else   
                                {   
                                      buffer[i++]=ch;buffer[i]='\0';   
                                      zhou[j++]=(char   *)malloc(sizeof(char)*2);   
                                      strcpy(zhou[j-1],buffer);   
                                      i=0;   
                                      fseek(in,-1L,1);   
                                }   
                          }   
                          else   
                          {   
                                buffer[i++]=ch;buffer[i]='\0';   
                                zhou[j++]=(char   *)malloc(sizeof(char)*2);   
                                strcpy(zhou[j-1],buffer);   
                                i=0;   
                          }   
                    }   
              }   
        }   
        /**************************以上是核心代码区**************************/   
    
    
      for(i=0;i<j-1;i++)               /*输出到文件*/   
      {   
          puts(zhou[i]);   
          cha=scmp(zhou[i]);   
          fputc('(',out);   
          fputc(cha,out);   
          fputc(',',out);   
          fputs(zhou[i],out);   
          fputc(')',out);   
          fputc('\n',out);   
      }   
      getch();   
      return;   
  }   
    

⌨️ 快捷键说明

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