c语言合法自定义标识符_C语言合法标识符解决方案

C/C++ code#include

#include

#include

const char *keywords[] = {

"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 iskeyword(const char *str)

{

int i;

for (i = 0; i < sizeof(keywords)/sizeof(keywords[0]); i++) {

if (!strcmp(str, keywords[i]))

return 1;

}

return 0;

}

int isidentifier(const char *str)

{

int i;

int len;

len = strlen(str);

if (!isalpha(str[0]) && str[0] != '_')

return 0;

for (i = 1; i < len; i++)

if (!isalnum(str[i]) && str[i] != '_')

return 0;

return 1;

}

int main(void)

{

int len;

char word[50 + 1];

while (fgets(word, sizeof(word), stdin)) {

len = strlen(word);

word[len - 1] = '\0';

if (!iskeyword(word) && isidentifier(word)) {

printf("%s: %s\n", word, "yes");

} else {

printf("%s: %s\n", word, "no");

}

}

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值