#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
int main(void)
{
int count=1;
char number[20]={0};
char *p = number;
gets_s(number);
if (*p == '1')
{
*p++;
while (*p >= '0' && *p <= '9')
{
count++;
*p++;
}
if (count == 11)
{
printf("yes");
return 0;
}
}
printf("no");
return 0;
}
运行后c语言数组越界访问
是不gets的问题
重写写了一个,你可以试试
int main()
{
char s[20];
printf("请输入手机号码\n");
scanf("%s",&s);
if(strlen(s)==11&&s[0]=='1')
{
for(int i=0;i<11;++i)
{
char ch=s[i];
if(ch<'0'&&ch>'9')
{
printf("no\n");
break;
}
}
printf("yes\n");
}else
{
printf("no\n");
}
}
加一个while循环判断指针p是否访问到字符串结束的判断再看看,不知道有没有效?
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>
int main(void)
{
int count=1;
char number[20]={0};
char *p = number;
gets(number);
if (*p == '1')
{
*p++;
while (*p!='\0'){
while (*p >= '0' && *p <= '9')
{
count++;
*p++;
}
if (count == 11)
{
printf("yes");
return 0;
}
}
}
//
printf("no");
return 0;
}