利用标准IO实现寻找文件中字符出现最多次数

一、可以实现的方法

        双向循环链表、数组的方法。

        前者比较繁琐,需要构建链表,实际操作起来较繁琐,但查找元素方便(有想法可去试试);

        后者相比较为简单,能够实现题目要求;

二、数组方法实现

1、思路:

        定义一个数组,让数组的序号与字符的ASCII与之对应(例如a[ch]→ch→65→'A')。再接收字符,将接收到的字符让与之对应的数组内的值+1。将文件内容接收完毕之后,选数组内元素值的最大值,就是出现过多少次,对应的序号就是就是哪个字符。

2、代码实现:

3、注意点:

1)fguts从终端(stdin)接收内容时会多接收一个'\n',导致字符串末尾(\n\0),为了使字符串能够正常接收,我们需要将字符串倒数第二位的'\n'赋值为'\0'.

2)数组利用元素下标比大小时,比较前假设第一位元素为最大或者最小,后续在循环内比较的对象是假设的这一位和 ‘i’ 对应的元素下标,满足if条件时则更新下标。最终我们既能得到最大或者最小的值,也能获得元素下标。而元素下标的数字对应的ASCII,用%c打印就可获得对应的字符。

3)fread函数接口,成功的返回值是读取到的对象个数,类型是size_t ,虽然这个类型是int型,我们也成size_t的意义是不再是简单的数字而是赋予这个数字是一个大小→读取到的对象的个数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值