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 ...
随机推荐
- #斐波那契#洛谷 3424 [POI2005] SUM-Fibonacci Sums
题目 已知\(x,y\)的斐波那契表示,求\(x+y\)的斐波那契表示 分析 显然得到两条性质: \(f_{i+1}=f_{i-1}+f_i\) \(2f_i=f_{i+1}+f_{i-2}\) 那么 ...
- Python 列表操作指南2
将元组的元素添加到列表中: thislist = ["apple", "banana", "cherry"] thistuple = (&q ...
- C++执行Linux命令
一.执行简单命令 比如需要创建文件.文件夹.删除文件 #include <iostream> #include <stdio.h> #include <stdlib.h& ...
- html-testRunner中文乱码
如下图,使用 html-testRunner 这个库生成测试报告后,出现乱码 因为 HTML文件已经写了 文件编码是 utf-8 所以 我怀疑可能是 html-testRunner 这个库文件中 ...
- .NET周刊【4月第1期 2024-04-07】
国内文章 一个程序员的编年史 https://www.cnblogs.com/lunacy/p/18117213 作者拥有15年软件开发经验,曾在多家公司工作,项目和团队起伏充满变数.2007年,在太 ...
- Node 中的 Process 理解,有哪些常用方法?
一.是什么 process 对象是一个全局变量,提供了有关当前 Node.js进程的信息并对其进行控制,作为一个全局变量 我们都知道,进程计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础, ...
- win11右下角快捷面板打不开的处理方法
win11右下角快捷面板打不开的处理方法 在搜索中查询计算机管理(因为没有将此电脑放出来,所以就用搜索了) 然后找到服务,找到windows推送通知系统服务,右键属性,将自动改为禁用,然后停止此服务, ...
- 【Oracle】ORDER BY 2 DESC,1 ASC,同时对多个数据列进行不同的顺序排序&Oracle中的 (+)
最初想对 travelled_distance 降序排列 ,如果有两个或者更多的用户旅行了相同的距离, 那么再以 name 升序排列 然后就写了下面的 SELECT U.NAME name, NVL( ...
- 牛客网-SQL专项训练23
①假设创建新用户nkw,现在想对于任何IP的连接,仅拥有user数据库里面的select和insert权限,则列表语句中能够实现这一要求的语句是(B) 解析: 考察知识点-数据库授权命令: GRANT ...
- 当 Knative 遇见 WebAssembly
简介: Knative 可以支持各种容器化的运行时环境,我们今天来探索一下利用 WebAssembly 技术作为一个新的 Serverless 运行时. 作者:易立 Knative 是在 Kubern ...