修改如下,供参考:
不能使用指针变量统计一行字符中不同类型字符的个数,因为指针变量只是一个地址变量,无法识别字符类型。要统计一行字符中英文字母、空格、数字和其它字符的个数,可以使用字符指针遍历字符串,然后通过判断字符的ASCII码范围或使用库函数判断字符类型来统计。
具体解决方案如下:
代码如下:
#include <stdio.h>
#include <ctype.h> // 包含isalpha()、isspace()、isdigit()等函数
int main()
{
char str[100]; // 定义一个字符数组保存输入的一行字符串
int letter_cnt = 0, space_cnt = 0, digit_cnt = 0, other_cnt = 0; // 分别保存英文字母、空格、数字和其它字符的个数
printf("请输入一行字符:");
gets(str); // 注意:该函数可能存在安全问题,建议使用fgets()函数代替
char *p = str; // 定义一个字符指针指向字符数组的首地址
while (*p != '\0')
{
if (isalpha(*p)) // 判断是否为英文字母
letter_cnt++;
else if (isspace(*p)) // 判断是否为空格
space_cnt++;
else if (isdigit(*p)) // 判断是否为数字
digit_cnt++;
else
other_cnt++; // 其它字符
p++; // 指针移动到下一个字符
}
printf("英文字母:%d,空格:%d,数字:%d,其它字符:%d\n", letter_cnt, space_cnt, digit_cnt, other_cnt);
return 0;
}