C语言文本文件里查找字符

问题遇到的现象和发生背景

从屏幕上输入一个英文文本文件的全路径(如d:\aa.txt)
用程序打开文本文件统计出各个可显示字符出现个数,包括数字字母标点不分大小写,没出现字符不统计(空格显为0x20)

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

在屏幕上打印各个字符出现次数格式类似
1 : 1
6 : 2
, : 109
0x20 : 111
a : 503

解答如下

img

#include <stdio.h>
int main()
{
    char path[255];
    gets(path);
    int t[255]={0};
    char ch;
    FILE* fp;
    fp=fopen(path,"r");
    if(fp==NULL)
    {
        printf("文件打开失败!\n");
        return 0;
    }
    else
    {
        while(fscanf(fp,"%c",&ch)==1)
        {
            t[ch]++;
            printf("%c",ch);
        }
    }
    fclose(fp);
    printf("\n");
    for(int i=0;i<255;i++)
    {
        if(t[i]>0&&i>=32)
        {
            if(i==32) printf("%s: %d\n","0x20",t[i]);
            else printf("%c: %d\n",i,t[i]);
        }
    }
    return 0;
}

各个可显示字符 --- 只考虑可显示字符吗?换行之类的不考虑呗?

#include<stdio.h>
int main()
{
    char s[100];
    gets(s);
    FILE *fp = fopen(s,"r");
    if(fp != NULL)
    {
        char a[10000];
        fread(a,1,10000,fp);
        int len = strlen(a);
        int b[255] = {0};
        for(int i=0;i<len;i++)
        {
            b[(unsigned char)a[i]]++;
        }
        fclose(fp);
        for(int i=32;i<127;i++)
        {
            if(b[i] > 0)
            {
                if(i==32)
                    printf("0x20 : %d\n",b[i]);
                else
                    printf("%c : %d\n",b[i]);
            }
        }
    }
    else
    {
        printf("open error");
        return 0;
    }
}


int main()
{
    char file[255], ch;
    int count[127] = {0};
    FILE *fp;
    scanf("%s", file);
    fp = fopen(file, "r");
    if (fp == NULL)
        exit(1);
    while (!feof(fp))
    {
        ch = fgetc(fp);
        if (ch >= ' ')
            count[ch]++;
    }
    fclose(fp);
    for (int i = 0; i < 127; i++)
    {
        if (count[i] > 0)
        {
            ch = i;
            if (ch == ' ')
                printf("0x%x: %d\n", ch, count[i]);
            else
                printf("%c: %d\n", ch, count[i]);
        }
    }
}