C语言去掉文件的空行,中文文档怎么去掉停用词

本文介绍了一种使用C语言实现去除文本中停用词的方法。通过读取停用词表和目标文本,逐词对比并移除停用词,最终输出不含停用词的文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

中文文档如何去掉停用词

已经进行过分词,却卡在去掉停用词上…哪位大神有c代码或者方法,希望能指教。万分感谢!

我只是搜到曾经有人说去停用词方法可以采用:

1.我们要有一个停用词表,可以网上下一个

2.把停用词表读入一个字符串数组string stop[100];

3.把要处理的字符串,以单个字符的形式读到一个char*指向的空间里,当读到不是字母的就停止,这样这个char*指向的空间里就存下了一个单词

4.把这个char *指针赋给一个string str变量,让这个str与每一个stop[i]比较。

5.如果不是停用词就把这个单词追加到另一个字符串string str1里,

6.如果是停用词就不管它了

7.把刚才读到的字符追加到str1里

……

……

奈何自己编码能力太次,望求教!

------解决思路----------------------

一个简易的例子:

int main(void)

{

int i, n;

FILE *fstop, *fs, *fd;

if (NULL == (fstop = fopen("stop.txt", "r"))) return 1;

if (NULL == (fs = fopen("src.txt", "r"))) return 1;

if (NULL == (fd = fopen("des.txt", "w"))) return 1;

char stop[100][30];   //100个停用词,够吗?

char buf[256];        //一行255个字符,够吗?

//读入停词表

n = 0;

while (1)

{

if (NULL == fgets(buf, 256, fstop)) break;

if ('\n' == buf[0]) continue;   //空行

buf[strlen(buf) - 1] = 0;       //去掉'\n'

strcpy(stop[n++], buf);

}

fclose(fstop);

while (1)

{

if (NULL == fgets(buf, 256, fs)) break;

if ('\n' == buf[0]) continue;   //空行

buf[strlen(buf) - 1] = 0;       //去掉'\n'

for (i = 0; i 

{

char *p = buf;

int len = strlen(stop[i]);

while (p = strstr(p, stop[i]))

{

memmove(p, p + len, strlen(p + len) + 1);

}

}

fprintf(fd, "%s\n", buf);

}

fclose(fs);

fclose(fd);

return 0;

}

------解决思路----------------------

崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值