点击这里给我发消息 点击这里给我发消息

判断字符串是不是合法的C语言标识符

添加时间:2013-12-7
    相关阅读: 技术 C语言
副标题#e#

    /*
     * Name: identifier.c
     * Author: x-bit, at www.patching.net, AllRights Reserved.
     * Description: 输入一串字符,判断该字符串是不是合法的C语言标识符。
     * Date: 09-05-2004
     * Compile environment: win2k+vc6下调试通过
     *
     */
    #include <stdio.h>

    int identf(char *str);
    int isKey(char *str);
    int x_strcmp(char *si, char *di);

    int main()
    {
     char buffer[256];
     printf("Enter a string: ");
     gets(buffer);
     if(identf(buffer))
      puts("合法的标识符");
     else
      puts("非法的标识符");

     return 0;
    }

    /**************************************************************************/
    int identf(char *str)
    {
     int flag=0;
     char *p=str;
     /*判断第一个字符是否符合*/
     if((*str>='a' && *str<='z') (*str>='A' && *str<='Z') *str=='_')
     {
      flag=1;
      str++;
     }
     /*从第二个字符开始遍历判断*/
     while(*str && flag)
     {
      if((*str>='a' && *str<='z') (*str>='A' && *str<='Z') *str=='_'
        (*str>='0' && *str<='9'))
      {
       flag=1;
       str++;
      }
      else
       flag=0;
     }

     /*判断是不是关键字*/
     if(flag)
      flag=isKey(p);

     return flag;
    }
 

#p#副标题#e#

   /*****************************是不是关键字*******************************/
    int isKey(char *str)
    {
     char *keyWord[]={"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", "volatile", "while"};
     int i, flag=1;
     for(i=0; i<32; i++)
     {
      if(x_strcmp(str, keyword[i])==0)
      {
       flag=0;
       break;
      }
     }

     return flag;
    }
    /*****************************字符串比较函数*******************************/
    /* 为了练技术,自己写了一个strcmp() */
    int x_strcmp(char *si, char *di)
    {
     while(*si && *di && *si==*di)
     {
      si++;
      di++;
     }

     return *si-*di;
    }

 

相关判断字符串是不是合法的C语言标识符

咨询热线:020-85648757 85648755 85648616 0755-27912581 客服:020-85648756 0755-27912581 业务传真:020-32579052
广州市网景网络科技有限公司 Copyright◎2003-2008 Veelink.com. All Rights Reserved.
广州商务地址:广东省广州市黄埔大道中203号(海景园区)海景花园C栋501室
= 深圳商务地址:深圳市宝源路华丰宝源大厦606
研发中心:广东广州市天河软件园海景园区 粤ICP备05103322号 工商注册