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<iostream>
#include<stdio.h>
#include<string.h>物棚
void sort(char *r[],int n)//按字典顺序肆猛排序
{char *t
int i,j,k
for(int i=0i<n-1i++)
{k=i
for(j=i+1j<nj++)
if(strcmp(r[k],r[j])>0) k=j
if(k!=i)
{t=r[i]
r[i]=r[j]
r[j]=t
}
}
}
void print(char *r[],int n)//输出单词
{ int i
for(i=0i<ni++)
printf("%s\n",r[i])
}
int main()
{ char *p,*q,*r[20]
char str[80]
char token[80]
int i=0
printf("enter a sentence:\n")
gets(str)
p=str
while(*p)//分离单词
{ q=token
while(*p!=' '&&*p)
{*q=*p
p++
q++
}
if(*p)
p++
*q='\0'
r[i]=token
printf("%s\n",r[i])
i++
}
sort(r,i)
print(r,i)
system("罩雹则Pause")
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)