论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > C语言程序设计教程
Tag:新手,函数,指针,数据类型,对象,Turbo,入门,运算符,数组,结构,二级,,tc,游戏,试题,问答,编译,视频教程

输入一串字符,判定该字符串是不是合法的C语言标识符

文章类别:C语言程序设计 | 发表日期:2008-9-24 14:43:46

 

/*
 * Name: identifier.c
 * Author: x-bit, at
www.patching.net, AllRights Reserved.
 * Des cription: 输入一串字符,判定该字符串是不是合法的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;
}
/*****************************是不是要害字*******************************/
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语言优化 人气:5691
下一篇:{实例}跳动的小球 人气:5774
视频教程列表
文章教程搜索
 
C语言程序设计推荐教程
C语言程序设计热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058