文本中逐个读取单词

今天又实现了将文本中的单词逐个读出的功能,以前就用过,但是没记下来,结果每次都要重写,现在记下来,以后就可以直接用了


#include <iostream>
#include <string>
#include <vector>
#include <fstream>


using namespace std;

void main()

{

ifstream ifile;

ifile.open("1.txt");//读出文本文件 1.txt 中的内容,如果不是工程文件中的文本,请写清楚文件路径
vector<string> wl;//存放取出来的单词
string s;
string temp;
int pos;
while(ifile>>s)
{
if((pos=s.find(","))!=-1)//将句号,问号,感叹号和省略号都视为断句标志
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的C语言程序,用于统计文本文件单词的频度: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define MAX_WORD_LEN 50 // 最大单词长度 #define MAX_WORDS 10000 // 最大单词数 int main(int argc, char *argv[]) { char filename[100]; // 文件名 char word[MAX_WORD_LEN + 1]; // 当前单词 char words[MAX_WORDS][MAX_WORD_LEN + 1]; // 所有单词 int freq[MAX_WORDS]; // 单词频度 int n = 0; // 单词数 int i, j, k; // 循环计数器 FILE *fp; // 文件指针 // 获取文件名 if (argc < 2) { printf("请输入文件名:"); scanf("%s", filename); } else { strcpy(filename, argv[1]); } // 打开文件 fp = fopen(filename, "r"); if (fp == NULL) { printf("无法打开文件 %s\n", filename); exit(1); } // 读取所有单词 while (fscanf(fp, "%s", word) == 1) { // 将单词转换成小写 for (i = 0; word[i] != '\0'; i++) { word[i] = tolower(word[i]); } // 检查单词是否已经出现过 for (i = 0; i < n; i++) { if (strcmp(words[i], word) == 0) { freq[i]++; break; } } // 如果单词是新出现的,则加入单词列表 if (i == n) { strcpy(words[n], word); freq[n] = 1; n++; } } // 关闭文件 fclose(fp); // 输出所有单词及其频度 for (i = 0; i < n; i++) { printf("%s:%d\n", words[i], freq[i]); } return 0; } ``` 该程序的基本思路是: 1. 打开文件; 2. 逐个读取文件单词,并将其转换成小写形式; 3. 检查该单词是否已经出现过,如果是则增加其频度,否则将其加入单词列表; 4. 关闭文件; 5. 输出所有单词及其频度。 需要注意的是,该程序假设单词之间用空格或换行符分隔,并且不考虑标点符号对单词的影响。如果需要更精确地统计单词,需要对程序进行一定的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值