问题是这样的,但是代码运行时没有输出想要的结果
//变量名只能由字母、数字、下划线_构成,并且以字母和下划线_开头。
//实际上就是判断是否是一个合法的标识符 不考虑关键字情况
//如:"_ios" 是合法的变量名
//"1oc" 不合法
//"123" 不合法
//"xiaohuang_" 合法
//"_UI*" 不合法
//"#OC" 不合法
//是返回1,不是返回0
代码如下
#include<stdio.h>
#include<math.h>
char *findzimu (char *p, int size);
int main()
{
char array[10] = {};
char *p = array;
char *ret;
int i = 0;
printf("请输入要判断的变量名\n");
for (i = 0; i<10; i++)
{
scanf("%c[^\n]", &p[i]);
}
ret = findzimu(p, 10);
if (ret == NULL)
{
printf("该变量名合法\n");
}
else
{
printf("该变量名不合法\n");
}
return 0;
}
char *findzimu (char *p, int size)
{
char *ret;
int i=0;
while (p[i] != '\0')
{
if ((p[i] == 95) || (p[i] >=65 && p[i]<=90) || (p[i]>=97 && p[i]<=122))
{
for (i = 1; i<10; i++)
{
if ((*(p + i) == 95) || (*(p+i)>=65 && *(p+i)<=90) || (*(p+i)>=97 && *(p+i)<=122))
{
ret = NULL;
}
else
{
break;
}
}
}
}
return ret;
}
看你的代码太复杂了,我直接帮你写了一个,你对比一下:
Linux 下编译及测试结果如下:
[root@iZ25a38chb4Z lory]# g++ teset.cpp -o test -g3 -Wall