已经进行过分词,却卡在去掉停用词上…哪位大神有c代码或者方法,希望能指教。万分感谢! 1.我们要有一个停用词表,可以网上下一个 |
|
18分 |
一个简易的例子:
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 < n; 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; } |
我想问一下楼上,src是要去停用词的文件么?des是去停用词后存储的文件么?
还想知道一下……为什么显示结果有误…请大神指教 |
|
你的src和des的理解是正确的, |
|
大神大神……txt 的地址我也更改为相对应的地址了,试验之后无错误……但是……为什么编译之后显示停止工作,求指教
|
|
我都已经验证过,你自己找下错误
|
|
2分 |
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。
|