• 大小: 1.77MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-25
  • 语言: C/C++
  • 标签: KWIC  C++  

资源简介

经典的字符串处理问题 KWIC c++版,实现了管道风格,调用返回风格还有OOP风格

资源截图

代码片段和文件信息

#include “CallReturnstyle.h“
#include 
#include 
#include 
using namespace std;

extern FILE *g_std;
extern FILE *g_foutput;
//KWIC链表头
KWICItem *g_listhead = NULL;
/*
 * IsNoisyCh -  判断是否为噪音字符
 * @ch  要判断的字符
 *
 * 判断@ch字符是否为噪音字符
 */
bool IsNoisyCh(char ch)
{
if(ch == ‘ ‘ || ch == ‘\t‘ 
|| ch == ‘\n‘ || ch == ‘\0‘
|| ch == ‘‘ || ch == ‘!‘ 
|| ch == ‘?‘ || ch == ‘;‘)
return true;
else 
return false;
}

/**
 *      GetNextLine    -   获取文件中的下一行字符串
 *      @source:    源文件指针
 * @line:    把所获取的字符串保存到line中
 *      
 * 获取@source文件中的下一行字符串到@line
 *
 */
bool GetNextLine(FILE *sourcechar line[])
{
//如果文件指针无效或字符串指针无效则返回
if(source == NULL || line == NULL)
{
return false;
}

//如果文件指针有效则读取一行字符到line中
int ch; //临时字符
int n; //已保存到的字符数

n = 0;

//循环读取一个字符直到遇到换行符
while((ch = fgetc(source)) != EOF && ch != ‘\n‘)
{
line[n++] = ch; //保存字符
}

line[n] = ‘\0‘; //给字符串打结

if(ch == EOF)
return false;
else 
return true;
}

/*
 *
 * LoadFromFile - 从文件中读取每一行字符串到链表中
 * @source 文件指针
 *
 *
 *
 */
void LoadFromFile(char filename[])
{
FILE *source = fopen(filename“r“);
if(source == NULL)
return ;

int ch; //临时字符
int n = 0; //已保存到的字符数

KWICItem *temp = NULL;
KWICItem *g_listpos = NULL;

if(g_listhead == NULL)
{
g_listhead = temp = new KWICItem;
memset(temp->lines0MAX_LINES*MAX_COUNT);
temp->linecount = 1;
temp->next = NULL;
g_listpos = temp;
}

//循环读取一个字符直到遇到换行符
while((ch = fgetc(source)) != EOF )
{
if(ch != ‘\n‘)
{
temp->lines[0][n++] = ch; //保存字符
}
else
{
temp->lines[0][n] = ‘\0‘; //给字符串打结
g_listpos->next = temp;
g_listpos = temp;
temp = new KWICItem;
memset(temp->lines0MAX_LINES*MAX_COUNT);
temp->linecount = 1;
temp->next = NULL;
n=0;
}
}

g_listpos->next = temp;
g_listpos = temp;
g_listpos->lines[0][n] = ‘\0‘;
g_listpos->next = NULL;
if(temp)
{
// delete temp;
// temp = NULL;
}

fclose(source);
}
void PreProcess(char line[])
{
int len = strlen(line);
//除去后面的噪音字符
int j = len - 1;
while(j>0 && IsNoisyCh(j)) j--;
line[j] = ‘\0‘;

//除去前面的噪音字符
int startindex = 0;
//查找从开始位置到第一个不是噪音字符的位置
while(IsNoisyCh(line[startindex])) startindex++;
j = 0;
while(line[j+startindex]!=‘\0‘)
{
line[j] = line[j+startindex];
j++;
}
line[j] = ‘\0‘;

//除去中间多余的噪音字符
j = 0;
char *temp = (char*)malloc(len + 1);
for(int i=0; line[i]!=‘\0‘; i++)
{
if(!IsNoisyCh(temp[j-1]) && ((IsNoisyCh(line[i]) && IsNoisyCh(line[i+1])) 
|| (IsNoisyCh(line[i]) && !IsNoisyCh(line[i+1]))))
{
temp[j++] = ‘ ‘;
}
else if(!IsNoisyCh(line[i]))
{
temp[j++] = line[i];
}
}
temp[j] = ‘\0‘;

strcpy(linetemp);
free(temp);
//下面的算法是不用其他的空间,不过这样就要进行许多移位操作,时间代价比较高
/*int i = 0;
while(line[i]!=‘\0‘)
{
if(IsNoi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     196462  2009-04-06 20:28  KWIC\EXE\CallReturnstyle.txt

     文件     360448  2009-04-06 20:16  KWIC\EXE\KWIC.exe

     文件     200037  2009-04-06 20:31  KWIC\EXE\oopstyle.txt

     文件     196462  2009-04-06 20:25  KWIC\EXE\pipestyle.txt

     文件      16351  2009-04-01 23:07  KWIC\EXE\TDP.txt

     文件       1055  2009-04-06 20:53  KWIC\EXE\运行时间统计.txt

     文件       6299  2009-04-06 20:11  KWIC\SRC\KWIC\CallReturnstyle.cpp

     文件       1043  2009-04-06 20:00  KWIC\SRC\KWIC\CallReturnstyle.h

     文件       2903  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\BuildLog.htm

     文件      22587  2009-04-06 20:11  KWIC\SRC\KWIC\Debug\CallReturnstyle.obj

     文件     196462  2009-04-06 20:28  KWIC\SRC\KWIC\Debug\CallReturnstyle.txt

     文件    2405372  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\KWIC.ilk

     文件      92074  2009-04-06 20:00  KWIC\SRC\KWIC\Debug\KWIC.obj

     文件    3342336  2009-04-04 00:42  KWIC\SRC\KWIC\Debug\KWIC.pch

     文件    2173952  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\KWIC.pdb

     文件     716393  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\OOPstyle.obj

     文件     200037  2009-04-06 20:31  KWIC\SRC\KWIC\Debug\oopstyle.txt

     文件      12204  2009-04-06 20:00  KWIC\SRC\KWIC\Debug\Pipestyle.obj

     文件     196462  2009-04-06 20:25  KWIC\SRC\KWIC\Debug\pipestyle.txt

     文件      15178  2009-04-04 00:42  KWIC\SRC\KWIC\Debug\stdafx.obj

     文件      16351  2009-04-01 23:07  KWIC\SRC\KWIC\Debug\TDP.txt

     文件     461824  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\vc70.idb

     文件     217088  2009-04-06 20:16  KWIC\SRC\KWIC\Debug\vc70.pdb

     文件       1055  2009-04-06 20:53  KWIC\SRC\KWIC\Debug\运行时间统计.txt

     文件       4451  2009-04-06 12:50  KWIC\SRC\KWIC\KWIC.cpp

     文件        133  2009-04-02 23:45  KWIC\SRC\KWIC\KWIC.txt

     文件       4172  2009-04-04 00:42  KWIC\SRC\KWIC\KWIC.vcproj

     文件       4776  2009-04-06 20:16  KWIC\SRC\KWIC\OOPstyle.cpp

     文件        664  2009-04-06 19:56  KWIC\SRC\KWIC\OOPstyle.h

     文件     200037  2009-04-06 20:16  KWIC\SRC\KWIC\oopstyle.txt

............此处省略17个文件信息

评论

共有 条评论