关于一个C语言传参数输出参的问题咋整

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容
#include <stdio.h>
#include <cstring>

typedef  struct st_c
{
    char ch;
    int num;
}cHp;
void sort(cHp *pi,int a)
{
    cHp*p0=pi;
    cHp* pj;
    cHp temp;
    for(pi=p0; pi-p0<a-1; ++pi)
    {
        for(pj=pi; pj-p0<a-1; ++pj)
        {
            for(pj=pi;pj-p0<a-1;++pj)
            {
                if(pj->num>(pj+1)->num)
               temp=*pj;
                *pj=*(pj+1);
                *(pj+1)=temp;
            }
        }
    }
}
void trans(cHp *pi,int a,int *ptt)
{
    cHp *pj=pi;
    int *Ptt;
    int i=0;
    for( i=0; i<a; i++,++pj,++ptt)
    {
        pj->ch=i;
        pj->num=*Ptt;
    }
}
void wen()
{
    char s[255];
    memset(s, 0, sizeof(s));
    int t[255] = {0};
    cHp arr[255];
    char ch;
    gets(s);
    FILE *fp;
    fp = fopen(s, "r");
    if (fp == NULL)
    {
        printf("error!\n");
    }
   else
   {
        while (fscanf_s(fp, "%c", &ch, 1) == 1)
        {
            if (ch < 'z' && ch > 'a')
            {
                t[ch - 32]++;
            } else
            {
                t[ch]++;
            }
        }
    }
    fclose(fp);
    trans(arr, 255, t);
    sort(arr, 255);
}

int main()
{
    int t[255] = {0};
    int *pt=&[0];
    cHp arr[255];
    memset(arr, 0, sizeof(cHp));
    wen();
    for(int i=0;i<255;i++)
    {
            if(arr[i].ch==32)
            {
                printf("%s: %d\n", "0x20", arr[i].num);
            }
            else
            {
                printf("%c: %d\n", arr[i].ch, arr[i].num);
            }
    }
    return 0;
}




我想要达到的结果

想要在wen这个函数中调用sort和trans两个函数然后在主函数中调用wen函数,就是三十九行和七十七行这块这个wen函数中的参数该怎么传那几个参呢,调用的参数该传哪几个有点迷糊了,各位帮忙看一下如果那里有其他问题帮忙改一下,谢谢,原题是文本文件里查找字符出现次数并排序的

#include <stdio.h>
#include <cstring>
 
typedef  struct st_c
{
    char ch;
    int num;
}cHp;
void sort(cHp *pi,int a)
{
    cHp*p0=pi;
    cHp* pj;
    cHp temp;
    for(pi=p0; pi-p0<a-1; ++pi)
    {
        for(pj=pi; pj-p0<a-1; ++pj)
        {
            for(pj=pi;pj-p0<a-1;++pj)
            {
                if(pj->num>(pj+1)->num)
               temp=*pj;
                *pj=*(pj+1);
                *(pj+1)=temp;
            }
        }
    }
}
void trans(cHp *pi,int a,int *ptt)
{
    cHp *pj=pi;
    int *Ptt;
    int i=0;
    for( i=0; i<a; i++,++pj,++ptt)
    {
        pj->ch=i;
        pj->num=*Ptt;
    }
}
void wen(cHp *arr)
{
    char s[255];
    memset(s, 0, sizeof(s));
    int t[255] = {0};
    char ch;
    gets(s);
    FILE *fp;
    fp = fopen(s, "r");
    if (fp == NULL)
    {
        printf("error!\n");
    }
   else
   {
        while (fscanf_s(fp, "%c", &ch, 1) == 1)
        {
            if (ch < 'z' && ch > 'a')
            {
                t[ch - 32]++;
            } else
            {
                t[ch]++;
            }
        }
    }
    fclose(fp);
    trans(arr, 255, t);
    sort(arr, 255);
}
 
int main()
{
    cHp arr[255];
    memset(arr, 0, sizeof(cHp));
    wen(arr);
    for(int i=0;i<255;i++)
    {
            if(arr[i].ch==32)
            {
                printf("%s: %d\n", "0x20", arr[i].num);
            }
            else
            {
                printf("%c: %d\n", arr[i].ch, arr[i].num);
            }
    }
    return 0;
}

提供参考链接:https://blog.csdn.net/qq_46418241/article/details/125874596
【C语言实现文件字符串的查找和按出现次数排序】

#include <stdio.h>

typedef  struct st_c
{
    char ch;
    int num;
}cHp;
void sort(cHp *pi,int a)
{
//    cHp*p0=pi;
//    cHp* pj;
    cHp temp;
//    for(pi=p0; pi-p0<a-1; ++pi)
//    {
//        for(pj=pi; pj-p0<a-1; ++pj)
//        {
//            for(pj=pi;pj-p0<a-1;++pj)
//            {
//                if(pj->num>(pj+1)->num)
//               temp=*pj;
//                *pj=*(pj+1);
//                *(pj+1)=temp;
//            }
//        }
//    }
    int i,j;
    for(i=0; i<a; i++)
    {
        for(j=0; j<a-1-i; j++)
        {
            if(pi[j].num > pi[j+1].num)
            {
                temp=pi[j];
                pi[j]=pi[j+1];
                pi[j+1]=temp;
            }
        }
    }
}
void trans(cHp *pi,int a,int *ptt)
{
    cHp *pj=pi;
    int i=0;
    int *Ptt=ptt;
    for( i=0; i<a; i++,++pj,++Ptt)
    {
        pj->ch=i;
        pj->num=*Ptt;
    }
}
void wen(cHp *arr, int len)
{
    char s[255];
    memset(s, 0, sizeof(s));
    int t[255] = {0};
    char ch;
    gets(s);
    FILE *fp;
    fp = fopen(s, "r");
    if (fp == NULL)
    {
        printf("error!\n");
    }
   else
   {
        while (fread(&ch, 1, 1, fp) == 1) // fscanf_s(fp, "%c", &ch, 1)
        {
//            if (ch < 'z' && ch > 'a')
//            {
//                t[(unsigned char)ch - 32]++;
//            }
//            else
//            {
//                t[(unsigned char)ch]++;
//            }
            t[(unsigned char)ch]++;
        }
    }
    fclose(fp);
    trans(arr, len, t);
    sort(arr, len);
}

int main()
{
    cHp arr[255];
    memset(&arr, 0, sizeof(cHp));
    wen(arr, 255);
    for(int i=0;i<255;i++)
    {
//        if(arr[i].ch==32)
//        {
//            printf("%s: %d\n", "0x20", arr[i].num);
//        }
//        else if(arr[i].num > 0)
//        {
//            printf("%c: %d\n", arr[i].ch, arr[i].num);
//        }
        if(arr[i].num > 0) //文件中出现的字符
        {
            printf("%c: %d\n", arr[i].ch, arr[i].num);
        }
    }
    return 0;
}