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

📄 filechange.cpp

📁 通过该文件的程序代码
💻 CPP
字号:

#include <iostream>
using namespace std;
//#include <fstream.h>
#include <stdio.h>
#include <stdlib.h>

#define NAME_LEN 128
#define ADD_LEN 256
#define TEL_LEN  64
#define MEMO_LEN 64
#define MAX_LINE_LEN 1000

typedef struct _CData
{
	long index;              //索引号
	long ID;                 //采编编号
	char Name[NAME_LEN+1];   //名称
	char Tel[TEL_LEN+1];     //电话号码
	char Add[ADD_LEN+1];     //地址
	double GIS_X;            //x坐标
	double GIS_Y;            //y坐标 
	char Memo[MEMO_LEN+1];   //备注
	long Introduct;           //介绍在intro.txt文件中所在的文件位置
}CData;

/*
解析一行Outlook的数据,解析结果存入data

  返回值:
  -1: 数据出错,解析失败
  0:解析成功
*/
int parseLine(char *line, CData *data, FILE *fp_intro)
{
	char *p1=line;
	char *p2=NULL;
	
	if( !line )
	{
		return -1;
	}
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}
	else
	{
		return -1;
	}
	
	data->ID = atoi(p1);
	p1=p2+1;
	
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}else{
		return -1;
	}
	strncpy(data->Name, p1, NAME_LEN);
	data->Name[NAME_LEN]='\0';
	p1=p2+1;
	
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}
	else
	{
		return -1;
	}
	strncpy(data->Tel,p1,TEL_LEN);
	data->Tel[TEL_LEN]='\0';
	p1=p2+1;
	
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}
	else
	{
		return -1;
	}
	strncpy(data->Add,p1,ADD_LEN);
	data->Add[ADD_LEN]='\0';
	p1=p2+1;
	
	
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}
	else
	{
		return -1;
	}
	data->GIS_X=atof(p1);
	p1=p2+1;
	
	
	p2 = strstr(p1, "\t");
	if( p2 )
	{
		*p2 = '\0';
	}
	else
	{
		return -1;
	}
	data->GIS_Y=atof(p1);
	p1=p2+1;
	
	
	//判断是否有介绍文字
	data->Introduct = -1;
	if( !p1 )
	{
		return 0;
	}
	else
	{
		if( strstr(p1, "NULL") )
		{
			return 0;
		}
		else if( strlen (p1) > 4 )
		{
			data->Introduct = ftell(fp_intro);		
			fprintf(fp_intro, "%d\t%s\n", data->index, p1);			
			//读取时: 
			//if( data->Introduct != -1 )
			//{
			//	fseek(fp_intro, data->Introduct, SEEK_SET);
			//	fscanf(fp_intro, "%d\t%s", record_id, intro);
			//}
		}
	}
	
	return 0;
}

int main(int argc[],char *argv[])
{
	FILE *fp;
	FILE *fp1;
	FILE *fp2;
	FILE *fp3;
	FILE *fp_intro;
	int bCount=0;
	int iOffset_temp=0;
	int iNum_index1=0;
	int iNum_index2=0;
	int iNum_index3=0;
	int iNum_index4=0;
	int iNum_index5=0;
	int iNum_index6=0;
	char ch0[51];
	char ch[51];
	unsigned char high;
	unsigned char low;
	char line[MAX_LINE_LEN+1];
	int count = 0;
	char *stream = "F:\\黄页信息.txt";
	char *Write_stream="F:\\data1.dat";
	char *Write_stream1="F:\\introduce.dat";
	char *Write_stream2="F:\\index2.dat";
	char *Write_stream3="F:\\index1.dat";
	//	char ch;
	//	CData *p;
	CData *buffer=(CData *)new char[sizeof(CData)];
	//char *buffer=new char[1024];
	memset(buffer,0,sizeof(CData));
	
	if ((fp=fopen( stream ,"r"))==NULL)
	{
		printf("file cannot be opened\n");
		exit(1);
	}
	if ((fp1=fopen(Write_stream,"wb+"))==NULL)
	{
		printf("file cannot be opened\n");
		exit(1);
	}
	if ((fp2=fopen(Write_stream2,"wb+"))==NULL)
	{
		printf("file cannot be opened\n");
		exit(1);
	}
	if ((fp3=fopen(Write_stream3,"wb+"))==NULL)
	{
		printf("file cannot be opened\n");
		exit(1);
	}
	//	while ((ch=fgetc(fp))!=EOF)
	//	fputc(ch,CData);
	//	*p++=ch;
	//fread(buffer,sizeof(CData),1,fp);
	//	CData buffer[1000];
	
	//	int i=0;
	//创建一个介绍文件
	//fp_intro
	if((fp_intro=fopen(Write_stream1,"wt"))==NULL)
	{
		printf("file cannot be opened\n");
		exit(1);
	}
	//读取时: 
	//		if( data->Introduct != -1 )
	//		{
	//			fseek(fp_intro, data->Introduct, SEEK_SET);
	//			fscanf(fp_intro, "%d\t%s", record_id, intro);
	//		}
	//
	while( fgets(line, MAX_LINE_LEN, fp) )
	{
		//	i++;
		line[MAX_LINE_LEN]='\0';
		if( -1 == parseLine(line, buffer, fp_intro) )
		{
			//	printf("file cannot be write to buffer\n");
			//exit(1);
			//	buffer[count]=line
			//error process;
			
		}
		count ++;
		buffer->index = count;
		
		fwrite(buffer,sizeof(CData),1,fp1); 
		//	fread(buffer,sizeof(CData),1,fp1);
	}
	fseek ( fp1,0,0 );
	//	short int code = (unsigned char )ch[0]*0XFF + (unsigned char )ch[1];
	for(high=0x81;high<0xFF;high++)
	{
		for(low=0x05;low<0xFF;low++)
		{
			if( low==0x7F )
			{
				continue;
			}
			ch[0]=high;
			ch[1]=low;
			ch[2]=0;
			//	printf("%s",ch);
			while (fread(buffer,sizeof(CData),1,fp1))
			{
				char *p=buffer->Name;
				
				while(*p)
				{
					if(*p<0)
					{
						ch0[0]=*p;
						ch0[1]=*(p+1);
						ch0[2]='\0';
						p+=2;
						if( strstr ( ch, ch0 ) )
						{
							
							if(0==bCount)									
							{
								
							//	iOffset=fp2-fp_index_temp;
								fprintf(fp3,"%s\t%d\n",ch,iOffset_temp);
								iNum_index1=fprintf(fp2,"%s\t%d",ch,buffer->index);
								iOffset_temp+=iNum_index1;
								bCount=1;
							}
							else
							{
								iNum_index2=fprintf(fp2,"\t%d",buffer->index);
								iOffset_temp+=iNum_index2;
							}
						}
					}
					else
					{
						p++;
					}
				}	
				
			}
			iNum_index3=fprintf(fp2,"\n");
			iOffset_temp+=iNum_index3;
			bCount=0;
			fseek ( fp1,0,0 );
			
		}	
		
	}
	fseek(fp1,0,0);
	for(high='0';high<='z';high++)
	{
		ch[0]=high;
		ch[1]='\0';
		//	printf("%c\n", high);
		while (fread(buffer,sizeof(CData),1,fp1))
		{
			char *p=buffer->Name;
			while(*p)
			{
				if(*p>0)
				{
					ch0[0]=*p;
					ch0[1]='\0';
					p++;
					if( strstr ( ch, ch0 ) )
					{
						if (0==bCount)
						{
							fprintf(fp3,"%s\t%d\n",ch,iOffset_temp);

							iNum_index4=fprintf(fp2,"%s\t%d",ch,buffer->index);
							iOffset_temp+=iNum_index4;
							bCount++;
						}
						else
						{
							iNum_index5=fprintf(fp2,"\t%d",buffer->index);
							iOffset_temp+=iNum_index5;
						}
					}
				}
				else
				{
					p++;
				}
			}
			
			
			
			//		fprintf(fp2,"%s\t%d\n",ch,buffer->index);
		}
		bCount=0;
		iNum_index6=fprintf(fp2,"\n");
		iOffset_temp+=iNum_index6;
		fseek(fp1,0,0);
	}


//	code = (unsigned char)ch1*0xFF+(unsigned char)ch2 - 0x8000;
	
	delete []buffer;
	buffer=NULL;
	fclose(fp);
	fclose(fp1);
	fclose (fp2);
	fclose(fp3);
	return 0;
}


⌨️ 快捷键说明

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