📄 simplescanner.cpp
字号:
#include<string.h>
#include<stdio.h>
#include<ctype.h>
#define MAX 20
#define MAXBUF 500
int lineno;
char *kw[6] = {"else","if","int","return","void","while"}; //存放c-的关键字
void main()
{ printf("please input your program:\n");
while(1){
char buf[MAXBUF]={0};
char number[MAX]={0};
char letter[MAX]={0};
gets(buf);
for(int i=0; i<sizeof(buf);i++)
{
if(isdigit(buf[i])){
int m=0;
while(isdigit(buf[i+1])&&m<MAX){
number[m]=buf[i];
i++;m++;
}
number[m]=buf[i];
printf("NUMBER: %s\n", number);
for(int j=0;j<MAX;j++){
number[j]=0;
}//清空NUMBER数组
}else if(isalpha(buf[i])){
int m=0;
while(isalpha(buf[i+1])&&m<MAX){
letter[m]=buf[i];
i++;m++;
}
letter[m]=buf[i];
int flag=0;
for(int c=0;c<6;c++){
if(strcmp(letter,kw[c])==0){
printf("keyword: %s\n", letter);
flag=1;
}
}
if(flag==0)
printf("ID: %s\n", letter);
for(int j=0;j<MAX;j++){
letter[j]=0;
}
}else if (buf[i] =='\n'){
lineno++;
} else if(buf[i]==' '|| buf[i]=='\t') {
}else if(buf[i]=='+'){
printf("+\n");
}else if(buf[i]=='-'){
printf("-\n");
}else if(buf[i]=='*'){
printf("*\n");
}else if(buf[i]=='/'){
int n=i+2;
if(buf[i+1]=='*'){
for(;n<sizeof(buf);n++){
if(buf[n]=='*'&&buf[n+1]=='/'){
printf("comment\n");
break;
}
}// comment
i=n+1;
}else{
printf("/\n");
}
}else if(buf[i]=='<'){
if(buf[i+1]=='='){
printf("<=\n");
}else{
printf("<\n");
}
}else if(buf[i]=='>'){
if(buf[i+1]=='='){
printf(">=\n");
}else{
printf(">\n");
}
}else if(buf[i]=='!'){
if(buf[i+1]=='='){
printf("!=\n");
}else{
printf("!\n");
}
}else if(buf[i]=='='){
if(buf[i+1]=='='){
printf("==\n");
}else{
printf("=\n");
}
}else if(buf[i]==';'){
printf(";\n");
}else if(buf[i]==','){
printf(",\n");
}else if(buf[i]=='('){
printf("(\n");
}else if(buf[i]==')'){
printf(")\n");
}else if(buf[i]=='['){
printf("[\n");
}else if(buf[i]==']'){
printf("]\n");
}else if(buf[i]=='{'){
printf("{\n");
}else if(buf[i]=='}'){
printf("}\n");
}
}//end for
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -