C语言 分词并显示 写函数?

C语言 分词并显示 写函数?,第1张

void Input (char *str) {

char c

int i = 0

while ( (c = getchar()) != '\n' &&i <81) {

* (str + i) = c

i++

}

}

int Split_Count (char *str, char **pStr) {

int count = 0, is_word = 0, j = 0

char tmp[81]

for (int i = 0i <strlen (str)i++) {

if (* (str + i) == ' ') {

if (is_word == 1) {

ss:

* (tmp + j) = '\0'

*pStr = (char *) malloc (strlen (tmp) * sizeof (char))

strcpy (*pStr, tmp)//调试了一下,到这行就出错

pStr++

j = 0

}

is_word = 0

} else {

if (is_word == 0) {

count++

}

* (tmp + j) = * (str + i)

j++

is_word = 1

if (i == strlen (str) - 1)

goto ss

}

}

return count

}

1.打开vs之后,按照下面的方式新建project。新建的工程名是text-segmentation。建好之后在你选择的那个目录会出现一个text-segmentation文件夹。

2.从nlpir官网下载相关资源,这里下载的是2013版本。下载地址:http://ictclas.nlpir.org/upload/20140324095815_ICTCLAS2014.rar

3.将下载文件解压缩,找到其中的Data文件夹、bin文件夹中的NLPIR.dll文件、include文件夹中的NLPIR.h文件、lib文件夹

中的NLPIR.lib文件,将这四个东西复制到刚刚的text-segmentation文件夹中的text-segmentation文件夹下,如下

效果:

4.点击text-segmentation文件夹下的text-segmentation.sln,在vs中打开这个项目。按照如下方式将NLPIR.h文件加入到头文件中。

5.点击project ->properties(快捷键ALT +

F7),按照下图所示的进行设置。别问我为什么这么设置,我也不懂,摸索了半天才摸索出来的,不这么设置就是搞不定。

6.在source里面新建程序新建c++源程序

7.接下来就可以在这里写代码了,下面附上一段我的代码作为例子。最关键的是前面的函数头部分,可以直接抄过去。

#ifndef OS_LINUX

#include

#pragma comment(lib, "NLPIR.lib")

#endif

#include

#include

#include

#include

#include

#include "NLPIR.h"

#include

using namespace std

void IfInit()//判断是否已经成功初始化

void IfExit()//是否成功退出

int main()

{

IfInit()//初始化程序

NLPIR_SetPOSmap(ICT_POS_MAP_SECOND)

int nitems//

nitems=NLPIR_ImportUserDict("H:\\sentence\\UserDict_manual.txt")

NLPIR_SaveTheUsrDic()

cout<<"import "<<nitems<<"

words"<<endl

//NLPIR_AddUserWord("A股")

//NLPIR_AddUserWord("沪指")

//int i

//char s[100]

//char s2[100]

//ifstream infile

////infile.open("H:\\sentence\\files to break

word.txt")

//infile.open("C:\\Users\\pc\\Desktop\\temp\\file_to.txt")

//ifstream infile2

////infile2.open("H:\\sentence\\files after break

word.txt")

//infile2.open("C:\\Users\\pc\\Desktop\\temp\\file_after.txt")

//for(i=0i<717696i++)//1798

//{

// if (i<350000)

// {

// infile.getline(s,100)

// infile2.getline(s2,100)

// continue

// }

// infile.getline(s,100)

// infile2.getline(s2,100)

// NLPIR_FileProcess(s,s2,0)

// cout<<i+1<<endl

//}

NLPIR_FileProcess("try.txt","try_result.txt",0)

IfExit()//退出

system("pause")

return 0

}

void IfInit()//判断是否已经成功初始化

{

if(!NLPIR_Init(0,UTF8_CODE))

{

cout<<"Init fails"<<endl

exit(EXIT_FAILURE)

}

else

{

cout<<"Init ok"<<endl

}

}

void IfExit()//是否成功退出

{

if(!NLPIR_Exit())

{

cout<<"Exit fails"<<endl

}

else

{

cout<<"Exit ok"<<endl

}

}

8.若函数报错,可以去text-segmentation文件夹中的text-segmentation文件夹下查看log文件。常见的错误是Initial

Fail,这很可能是因为license过期了,解决方法可见http://blog.csdn.net/heyu158/article/details/17525753

#include<stdio.h>#include<string.h>#define nmax 14 #define norw 8 /*关键字个数*/ #define al 10 #define getchdo if(-1==getch()) return -1 #define getsymdo if(-1==getsym()) return -1 char ch/*获取字符的缓冲区,getch使用*/ char word[norw][al]/*保留字*/ char fname[al]/*文件名*/ char id[al+1]/*存放标识符或保留字*/ char line[81]/*读取行缓冲区*/ char a[al+1]/*临时符号,多处的字节用于存放0*/ char anum[nmax+1]/*临时符号,存放number*/ char inum[nmax+1]/*存放常数*/ int cc,ll/*cc表示当前字符(ch)的位置*/ int num/*常数*/ int err//错误计数器 FILE * finFILE * foutFILE * fas/*词法分析结果文件*/ /*函数执行出错,退出程序*/ int getch()/*读取一行字符*/ int getsym() /*从文件fin中读取一行字符,保存到字符缓冲区line中*/ int getch() { if(cc==ll) { ll=0cc=0ch=' 'while(ch!=10) { if(feof(fin)) { return -1} if(EOF==fscanf(fin,"%c",&ch)) { line[ll]=0break} line[ll]=chll++} } ch=line[cc]cc++return 0} /*读取一个分词*/ int getsym() { int i,j,kwhile(ch==' '||ch==10||ch==9) //忽略空格,换行和TAB { getchdo} if(ch>='a'&&ch<='z') //判断是否为关键字或标识符 { k=0do{ if(k<al){ a[k]=chk++} getchdo}while(ch>='a'&&ch<='z'||ch>='0'&&ch<='9')a[k]=0if(k>al)printf("error")strcpy(id,a)i=0j=norw-1do{ k=(i+j)/2if(strcmp(id,word[k])<=0) {j=k-1} if(strcmp(id,word[k])>=0) { i=k+1} }while(i<=j)if(i-1>j) { fprintf(fas,"Keyword %s\n",id)/*分词为关键字*/ } return 0} 这里面的代码写不开,你加我的QQ:412686686,我直接传文件给你好了,你这个问题的代码太多了,我刚好昨天给别人写了一个。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11550163.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存