输入一个字符串,判断是否是一个合法的c语言标识符。 输入一个字符串(长度不超过100)。

#include<stdio.h>
#include<string.h>
void main()
{
char a[100];
scanf("%s",a);
int len=strlen(a);
int key=1;
int i;
if(a[0]=='_'||(a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z'))
{
for(i=1;i<len;i++)
{
if(a[0]=='_'||(a[0]>='a'&&a[0]<='z')||(a[0]>='A'&&a[0]<='Z')||(a[i]>='0'&&a[i]<='9'))
key=1;
else key=0;
}
}
else key=0;
if(key==1)
printf("Y");
else printf("N");
}
请问我的代码为啥在字符串中出现空格或其它符号时输出还是N呢?
不对,是输出还是Y...

两个问题
一个是 如果有空格,那么不能用scanf %s, 因为这个遇到空格就会终止,无法读入完整输入。 需要用gets
第二个, 当出现非法字符, 赋值key=0;后,就应该break

否则下一个字符合法,就会再赋值key=1
事实上,当出现一个非法的情况下, 已经不需要继续判断了。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网