----------------解决方案--------------------------------------------------------
#include<stdio.h>
#include<string.h>
int main()
{
char str[10];
int i=0;
gets(str);
if(str[0]>='A'&&str[0]<='Z'||str[0]>='a'&&str[0]<='z'||str[0]=='_')
{
while(str[i]!='\0')
if(int(str[i])>=0&&int(str[i])<=255) i++;
}
if(i==strlen(str)) printf("valid!!\n");
else printf("invalid!!\n");
return 0;
}
----------------解决方案--------------------------------------------------------
非常感谢
----------------解决方案--------------------------------------------------------
我有个疑问,觉得十二楼的代码还 不够完美
那个只判断输入的第一个字符是否符合C语言标识符的规定。
而事实上C语言的标识符只能由字母,数字和下划线组成。
而上述代码只限定第一个字符符合规定而已,如果输入的字符串中有规定以外的字符而第一个字符符合规定,那么是输出是合法的。显然这就判断错误了.
而且 if(int(str[i])>=0&&int(str[i])<=255) i++;
在 Turbo c/c++ for windows 中运行说错误。
改为如下
if(strlen(str)>=0&&strlen(str)<=255) i++;
就通过。
具体怎样改,对于这方面我不够深入。希望各位能给点意见。
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------
----------------解决方案--------------------------------------------------------