⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strfnct.h

📁 网页抓取程序
💻 H
字号:
/* OpenWebSpider * *  Authors:     Stefano Alimonti AND Stefano Fantin *  Version:     0.7 *  E-Mails:     shen139 [at] openwebspider (dot) org AND stefanofantinguz@yahoo.it * * * This file is part of OpenWebSpider * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA * */#ifndef __STRFNCT#define __STRFNCT#define TOKENS             " ,.;:|+*-_\"'\t\r\n\\/<>()[]{}|!&=@#"/* atoupper * in -> out <- maxout -> * in = "HellO" => out = "HELLO" */int atoupper(char* in, char* out, int maxout){	memset(out,0,maxout);	strncpy(out,in,maxout);	_strupr(out);return 1;}/* UnToken *str -> Tokens -> out <- len -> * str = "test1\n2\r3;!4"	Tokens = "\n\r;" ==> out = "test123!4" */int UnToken(char* str,char* Tokens,char* out,int len){int c,i,x=0,tokenfound,y;y=MIN(len,(signed)strlen(str));	for(c=0;c<y;c++)	{		tokenfound=0;		for(i=0;i<(signed)strlen(Tokens);i++)			if(str[c]==Tokens[i])				tokenfound=1;		if(tokenfound==0)			out[x++]=str[c];	}	out[x]=0;return 1;}/* bTokenIn * str -> Tokens -> len -> 1|0 <- * str = "test1\n2\r3;!4"	Tokens = "\n\r;" ==> 1 */int bTokenIn(char* str,char* Tokens,int len){int c,i,y;y=MIN(len,(signed)strlen(str));	for(c=0;c<y;c++)		for(i=0;i<(signed)strlen(Tokens);i++)			if(str[c]==Tokens[i])				return 1;return 0;}/* OnlyOneSpace * str -> out <- len -> * str = "test1 2  4    4" out = "test1 2 4 4" */int OnlyOneSpace(char* str,char* out,int len){int c,x=0;	for(c=0;c<(signed)strlen(str);c++)	{		if(x && out[x-1]==' ' && str[c]==' ')	//if x>0 and last char is space and current char is space -> don't add this char			continue;		else			out[x++]=str[c];		if(x>=len)			break;	}	out[x]=0;return 1;}/* ReplaceChr * replaces all occourences of a char(bus) with sub * string = "test" bus='s' sub='x' => "text" */int ReplaceChr(char* string, char bus, char sub){int i;	for(i=0;i<(signed)strlen(string);i++)	{		if(string[i]==bus)			string[i]=sub;	}return 1;}/* ReplaceStr * replaces all occurrences of a string(bus) with sub */int ReplaceStr(char* string,char* strOut, char* bus, char* sub){int x=0,y=0;	strOut[0]=0;	for(x=0;x<(signed)strlen(string);x++)	{		if(strnicmp(string+x,bus,strlen(bus))==0)		{			strcat(strOut,sub);			x+=strlen(bus)-1;			y+=strlen(sub);			continue;		}		strOut[y++]=string[x];		strOut[y]=0;				}return 1;}/* RemoveShit * converts all unwanted chars in a string to ' ' */void RemoveShit(char* text){int i;unsigned char curC;	for(i=0;i<(signed)strlen(text);i++)	{		curC=text[i];		/*                  UnHtml()                      */		if( /*!( (curC>=32 && curC<=125) || (curC>=192 && curC<=255) ) ||*/ curC=='\'' || curC=='\"' || curC=='\\')			text[i]=' ';	}}/* strtrim * removes starting and ending spaces */char* strtrim(char* in,char* out){int y,i;char* tmp;		y=strlen(in);	tmp = malloc(y+1);	if(tmp==NULL)		MemoryCorruptedHandler("strtrim");	tmp[0]=0;	for(i=0;i<y;i++)	{		if(in[i]!=' ')		{			strcpy(tmp,in+i);			break;		}	}	y=strlen(tmp);	for(i=y-1;i>=0;i--)	{		if(tmp[i]!=' ')		{			tmp[i+1]=0;			break;		}	}	strcpy(out,tmp);	FREE(tmp);return out;}/* strWord * where -> word -> pos <- * strWord("web spider","spider") -> (char*) "spider" * strWord("webspider","spider") -> (char*) NULL */char* strWord(char* where,char* word){char* pFound;char beg;char end;int x,y;int nTokens;	while(   ( pFound = strstr(where,word) )   )	{				if(pFound==NULL)			return NULL;		if(pFound==where)			beg=' ';		else			beg=(char)pFound[-1];		end=pFound[strlen(word)];		if(end==0)			end=' ';		nTokens=strlen(TOKENS);		for(x=0;x<nTokens;x++)/**//**/		/**/if(beg==TOKENS[x])/**//**/		/**//**/for(y=0;y<nTokens;y++)		/**//**//**/if(end==TOKENS[y])		/**//**//**//**/return pFound;		where=pFound+1;	}return NULL;}char * my_stristr(char* s,char* find){char c, sc;unsigned int len;    if ((c = *find++) != 0)    {        len = strlen(find);        do        {            do            {                if ((sc = *s++) == 0)                    return (char *)0;            } while (sc != c);        } while (strnicmp(s, find, len) != 0);        s--;    }return s;}/***********************************************************************************************//***********************************************************************************************//*myCStr*//***********************************************************************************************/#define SSS   200int myCStrLen(struct __myCStr* myCStr){return myCStr->myStrLen;}int myCStrLenUpdate(struct __myCStr* myCStr){	myCStr->myStrLen=strlen(myCStr->myString);return myCStr->myStrLen;}char* myCStrCpy(struct __myCStr* myCStr, char* text){	FREE(myCStr->myString);	myCStr->myString=(char*)malloc(strlen(text)+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrCpy");	strcpy(myCStr->myString,text);	myCStr->myStrLen=strlen(myCStr->myString);	return myCStr->myString;}char* myCStrnCpy(struct __myCStr* myCStr, char* text, int n){	FREE(myCStr->myString);	myCStr->myString=(char*)malloc(n+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrnCpy");	memset(myCStr->myString,0,n+SSS);	strncpy(myCStr->myString,text,n);	myCStr->myStrLen=strlen(myCStr->myString);	return myCStr->myString;}char* myCStrCat(struct __myCStr* myCStr, char* text){	myCStr->myString=(char*)realloc(myCStr->myString,myCStr->myStrLen+strlen(text)+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrCat");	strcat(myCStr->myString,text);	myCStr->myStrLen=strlen(myCStr->myString);	return myCStr->myString;}char* myCStrnCat(struct __myCStr* myCStr, char* text, int n){	myCStr->myString=(char*)realloc(myCStr->myString,myCStr->myStrLen+n+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrnCat");	strncat(myCStr->myString,text,n);	myCStr->myString[myCStr->myStrLen+n]=0;	myCStr->myStrLen=strlen(myCStr->myString);	return myCStr->myString;}char* myCStrMemCpy(struct __myCStr* myCStr, char* blob, int blobLen){	FREE(myCStr->myString);	myCStr->myString=(char*)malloc(blobLen+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrMemCpy");	memcpy(myCStr->myString,blob,blobLen);	myCStr->myStrLen=blobLen;	return myCStr->myString;}char* myCStrMemCat(struct __myCStr* myCStr, char* blob, int blobLen){// |myString| + |blob|// myStrLen = myStrLen + blobLen	myCStr->myString=(char*)realloc(myCStr->myString,myCStr->myStrLen+blobLen+SSS);	if(myCStr->myString==NULL)		MemoryCorruptedHandler("myCStrMemCat");	memcpy(myCStr->myString+myCStr->myStrLen,blob,blobLen);	myCStr->myStrLen+=blobLen;	return myCStr->myString;}/**************{int i;MYCSTR test;test.myString=NULL;	myCStrCpy(&test, "prova");		for(i=0;i<1000;i++)		myCStrCat(&test, "XX123XX123XX123XX123XX123XX123XX123XX123|||||||XX123XX123XX123XX123XX123XX123XX123CCCCCCCCCCCCCZZZZZZZZZZZZ>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<");			//printf("%s\n\n",test.myString);	myCStrMemCpy(&test, "asder",5);		for(i=0;i<1000;i++)		myCStrMemCat(&test, "123456",6);			myCStrMemCat(&test, "\0",1);	//printf("%s\n\n",test.myString);	FREE(test.myString);return 1;}**************/#endif/*EOF*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -