C语言:找到在文件单词中字符个数最多的单词。
第一点:这是一个传回指针的指针函数,所以在定义的时候是char*类型的函数,传进的参数是一个文件指针,(敲重点了,一定一定一定要把文件打开了才能传这个文件指针进来!!)因为这是在你的文本文件里面进行查找最长的单词。
第二点:这个功能实现有点类似于打擂台法,知道打擂台法的uu们应该很容易看懂这个功能,基本算法就是通过每次一边录入一个字符,一边计算录入了多少个字符作为该单词的长度。 当然你肯定会想到用strlen来计算(记得单词末尾要加上\0才可以用哈),这个方法当然可以,但我这个是一边想一边实现的,没有考虑很多,见谅一下~
第三点:因为我在读取文件的时候需要知道一个单词的结束与开始,所以我用了isalpha()函数,所以需要一个头文件ctype.h。isalpha(ch)函数若ch为字母,则返回非零值,若不是则返回0。
第四点:功能实现步骤:
a)先判断是否是一个单词的开始,即用isalpha函数进行判断是否录入的是一个字母,若是一个字母就进入下一步。
b)接下来就是一直录入字符,一直到录入的字符不是字母,也是用isalpha判断。
c)单词长度就是n的大小,最后要对上一个最长单词进行比较,所以在n+1除加上\0才能用strcmp这个函数进行比较。刚刚说了这个功能就是类似于打擂台法,现在说的就是当比较出来比上一个单词还要长就把上一个单词踢掉,对现在最长的单词进行保存下来。
d)最后到了结尾,也就是当文件到了流的末尾,就停止上述操作,对存进的那个最长的单词字符串进行返回,因为我们的函数是指针函数,返回值是一个指针,而且字符串数组也就是数组名(字符中首元素)。
//最后再main里面打印出来你找到的最长单词,并且可以用strlen对该字符串进行长度的测量。
还有一个在这个代码里面学到的是:在函数内部定义想要返回数组就会造成内存泄漏,所以要用全局变量来存放,或者用传一个字符数组的指针作为函数参数,重要指数五个星
#include<stdio.h>
#include<string.h>
#include<ctype.h>//该头文件包含isalpha()这个函数
char temp[50];
//辅助功能,用来临时存放最长的单词,因为在函数内部定义想要返回数组就会造成内存泄漏
char *Find_MAXword(FILE*fp);
int main(void)
{
char *max;//接收最长的单词
FILE*fp;
fp = fopen("D:/单词文件.txt","r");
max = Find_MAXword(fp);
fclose(fp)
printf("最长的单词为:%s, 长度为:%d",max , strlen(max));
return 0;
}
char *Find_MAXword(FILE*fp)
{
char long_word[50];//存放最长的单词
char ch;
int n = 0, len = 0, i;
while(!feof(fp))
{
ch = fgetc(fp);
if(isalpha(ch))
{
long_word[n++] = ch;
}
else if(!isalpha(ch))
{
long_word[n] = '\0';
if(len <= n - 1)//判断是否遇到比之前最长的单词还要长 ,通过n来判断
{
len = n;//把比之前最长的那个单词长度替换成现在比他长的
strcpy(temp, long_word);//存放目前找到的最长单词
}
n = 0;
for(i = 0; i < 50; i++)//用空格清空存放的字符串,继续存放下一个
{
long_word[i] = ' ';
}
}
}
return temp;
}
C语言:找到在文件单词中字符个数最多的单词。的更多相关文章
- 递归找到多级文件夹中所有pdf文件的py程序
因个人需要,写了一个可以递归找到多级文件夹中所有pdf的小程序,发布出来供有需要的人参考或使用. import os import re import shutil from os.path impo ...
- java语言 找出文章中出现次数最多的单词
package english; import java.io.File; import java.util.Scanner; import java.io.FileNotFoundException ...
- js实现限制容器中字符个数
html: <div class="ellipsis"> 夜空中最亮的星/请指引我走出去/夜空中最亮的星 是否知道/那曾与我同心的身影 如今在哪里/夜空中最亮的星 是否 ...
- Python每日一练(1):计算文件夹内各个文章中出现次数最多的单词
#coding:utf-8 import os,re path = 'test' files = os.listdir(path) def count_word(words): dic = {} ma ...
- R语言实现两文件对应行列字符替换(解决正负链统一的问题)
假设存在文件file1.xlsx,其内容如下: 存在文件file2.xlsx,其内容如下: 现在我想从第七列开始,将file2所有的字符替换成file1一样的,即第七.八.九.十列不需要改变,因为fi ...
- Python2018-字符串中字符个数统计
1 编写程序,完成以下要求: 统计字符串中,各个字符的个数 比如:"hello world" 字符串统计的结果为: h:1 e:1 l:3 o:2 d:1 r:1 w:1 prin ...
- python统计字符串中字符个数
str = "xxx" result = {} for i in set(str):#set将字符串转为集合对象,用于去重,减少计算量 result[i] = str.count( ...
- More is better(hdu 1856 计算并查集集合中元素个数最多的集合)
More is better Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) ...
- 学c语言做练习之统计文件中字符的个数
统计文件中字符的个数(采用命令行参数) #include<stdio.h> #include<stdlib.h> int main(int argc, char *argv[] ...
- 基于java:读写一个英文的txt文件,记录单词个数,并输出十个出现最多的单词及出现的个数;
import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; class W ...
随机推荐
- Avalonia的Window生命周期
Avalonia中的Window 在Avalonia中,Window是一个基本的UI元素,它代表了一个应用程序的窗口.每个Window都可以包含其他的UI元素,如按钮.文本框等,并可以响应各种用户输入 ...
- #SPFA#洛谷 2384 最短路
题目 给定\(n\)个点的带权有向图,求从\(1\)到\(n\)的路径中边权之积最小的简单路径. 答案对9987取模 分析 此题设了陷阱,如果一边取模一边跑最短路即使最终答案最小也不一定是未取模前的最 ...
- #K-D Tree#洛谷 4357 [CQOI2016]K 远点对
题目 已知平面内 \(n\) 个点的坐标,求欧氏距离下的第 \(k\) 远点对. 分析 先将\(k\)乘2转换为第\(k\)远有序点对. 由于\(O(n^2)\)即枚举一个点再枚举另一个点会超出时限, ...
- OpenHarmony Meetup 深圳站招募令
OpenHarmony Meetup城市巡回深圳站火热来袭!! 日期:2023年10月15日14:00 地点:深圳市福田区上步路中路1003号 深圳市科学馆 与OpenHarmony技术大咖近距离 ...
- mock数据模拟和使用
安装mock,和案axios npm i mockjs npm i axios 后再vue组件中使用 <script>import axios from 'axios'import Moc ...
- 用百度和神策做埋点为何pv差异很大?
近期ClkLog收到一个客户反馈说我们与百度统计的PV数据差异很大.为了验证问题,开发进行了一次对页面浏览量统计的测试.针对同一个IP同一个时间的页面浏览量统计发现,百度的统计数据只有一条,而ClkL ...
- 快速获取使用dblink的视图的全部字段
快速获取使用dblink的视图的全部字段 默认情况下,使用dblink连接的视图在PL/SQL是没法通过代码助手获取全部的字段的 如果要获取全部字段的话,可以使用一个奇怪的方法 对要获取的使用dbli ...
- 力扣69(java&python)-x的平方根(简单)
题目: 给你一个非负整数 x ,计算并返回 x 的 算术平方根 . 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 . 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0. ...
- 力扣150(java)-逆波兰表达式求值(中等)
题目: 根据 逆波兰表示法,求表达式的值. 有效的算符包括 +.-.*./ .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 注意 两个整数之间的除法只保留整数部分. 可以保证给定的逆波兰表达式 ...
- 系列解读 SMC-R (二):融合 TCP 与 RDMA 的 SMC-R 通信 | 龙蜥技术
简介:本篇以 first contact (通信两端建立首个连接) 场景为例,介绍 SMC-R 通信流程. 文/龙蜥社区高性能网络SIG 一.引言 通过上一篇文章 <系列解读SMC-R:透 ...