这是检查给定字符串的代码是identifier
还是keyword
。这是代码:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>
int main(){
int i = 0, flag = 0;
char a[10][10] = {"int", "float", "break", "long", "char", "for", "if", "switch", "else", "while"}, string[10];
//clrscr();
printf("Enter a string :");
gets(string);
/*----Checking whether the string is in array a[][]----*/
for(i = 0 ; i < 10; i++){
if( (strcmp( a[i], string) == 0) )
flag = 1;
}
/*----If it is in the array then it is a keyword----*/
if( flag == 1)
printf("\n%s is a keyword ", string);
/*----Otherwise check whether the string is an identifier----*/
else{
flag = 0;
/*----Checking the 1st character*----*/
if( (string[0] == '_') || ( isalpha(string[0]) != 0 ) ){
/*---Checking rest of the characters*---*/
for(i = 1; string[i] != '\0'; i++)
if( (isalnum(string[i]) == 0 ) && (string[i]!='_') )
flag = 1;
}
else
flag = 1;
if( flag == 0)
printf("\n%s is an identifier ", string);
else
printf("\n%s is neither a keyword nor an identifier ", string);
}
getch();
}
S.O可以为我提供该代码吗?
答案 0 :(得分:1)
这是一个简单的方法:
static const std::string keywords[] =
{
"char", "class",
"struct",
/* ... */
};
static const size_t keyword_quantity =
sizeof(keywords) / sizeof(keywords[0]);
std::string search_word;
cin >> search_word;
std::string const * const iterator =
std::find(&keywords[0], &keywords[keyword_quantity],
search_word);
if (iterator != &keywords[keyword_quantity])
{
cout << "Word is a keyword!\n";
}
std::string
数据类型使文本或字符串处理更容易
std::find
功能很简单,因此您不必编写它(并且已经过测试)。