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