输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数,使用指针变量。

img


这是我参考网上的代码 结合题目要求改的,当输入中有数字和其他字符时,并不能计算出数字和其他字符。
用的vc6.0

修改如下,供参考:

img

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7740487
  • 这篇博客你也可以参考下:C语言 字符串分类统计 输入一行字符,分别统计出其中英文字母、数字、空格和其他字符的个数
  • 除此之外, 这篇博客: C语言语法基础(十)——结构体、共用体和用户定义类型中的 结构体是一种复杂但灵活的构造数据类型,它由若干个相互关联的不同类型的数据项组成。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 在这里插入图片描述

  • 您还可以看一下 刘国柱老师的热更新框架设计之热更流程与热补丁视频课程课程中的 创建校验文件_递归算法遍历指定路径所有文件思路小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    不能使用指针变量统计一行字符中不同类型字符的个数,因为指针变量只是一个地址变量,无法识别字符类型。要统计一行字符中英文字母、空格、数字和其它字符的个数,可以使用字符指针遍历字符串,然后通过判断字符的ASCII码范围或使用库函数判断字符类型来统计。

    具体解决方案如下:

    1. 定义一个字符数组保存输入的一行字符串。
    2. 用字符指针指向字符数组的首地址,遍历整个字符串。
    3. 判断字符类型:可以通过判断字符的ASCII码来判断字符类型,也可以使用C语言库函数中的isalpha()、isspace()、isdigit()等函数判断字符类型。
    4. 根据字符类型累加计数器。可以定义4个变量保存不同类型字符的个数,也可以使用数组来保存。
    5. 输出结果,即统计出来的每种字符类型的个数。

    代码如下:

    #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;
    }