该代码效果是输入一串小于80个的英文字符和数字字符,分别得出两种字符的个数,并将两种字符分别输出,请问各位大佬,该代码有什么漏洞吗,不知为何就是跑不起来
#include<cstdio>
#include<ctype.h>
using namespace std;
int main(int argc, char const* argv[])
{
const int size = 80;
int char_num = 0, digit_num = 0;
char arr[size] = "";/* 字符串用'\0'表示结尾 */
for (int i = 0;i < size;i++) {
char c = getchar();
/* if (c == '*')
break;//一般选择EOF作为输入结束标志 */
if (c == EOF)
break;
/* if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z') */
if (isalpha(c))//ctype.h库函数,验证是否为英文字符
++char_num;
/* if (c >= '0' && c <= '9') */
if (isdigit(c))//验证是否为数字
++digit_num;
arr[i] = c;
}
printf("英文字符%d,数字字符%d\n", char_num, digit_num);
for (int i = 0;i < size && arr[i] != '\0';i++)
if (isalpha(arr[i]))
putchar(arr[i]);
putchar('\n');
for (int i = 0;i < size && arr[i] != '\0';i++)
if (isdigit(arr[i]))
putchar(arr[i]);
putchar('\n');
return 0;
}