我这里有一个小程序是从WEB页里提取标题、内容、时间、来源等的,但是我要把这些内容提取到一个ACCESS数据库里的指定位置,该怎么做呢, 能否给出具体步骤或源代码呢?谢谢
程序:
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"#define T_NULL 0
#define T_TITLE 1
#define T_CONTEXT 2
#define T_SOURCE 3
#define T_DATE 4struct Node{
char text;
struct Node *next;
};struct Node *create(int i)
{
struct Node *head,*p,*q;
int j;
for(j=0;j<i;j++)
{
q=(struct Node *)malloc(sizeof(struct Node));
if(!j)
head=p=q;
else
{
p->next=q;
p=q;
}
}
p->next=head;
return(head);
}void main()
{
FILE *fp,*fp1;
struct Node *sp,*head,*p,*q;
char *ofname,*sfname,*types,ch;
char titles[8]={'<','T','I','T','L','E','>','\0'},titles1[8];
char Srcs[11]={'h','r','e','f','=','h','t','t','p',':','\0'};
char Return='\n';
char type[15];
int i,k,flag,flag1=0,flag2=0,flag3=0,T_FLAG=T_NULL;
ofname=(char *)calloc(20,1);
sfname=(char *)calloc(20,1);
types=(char *)calloc(10,1);
printf("Enter the type of the web:");
scanf("%s",type);
printf("Enter the name of opened file:");
scanf("%s",ofname);
printf("Enter the name of saved file:");
scanf("%s",sfname);
if((fp=fopen(ofname,"r"))==NULL)
{
printf("\ncann't open the file.\n");
return;
} if((fp1=fopen(sfname,"w+"))==NULL)
{
printf("\ncann't open the file.\n");
return;
} types="类型:\0";
for(i=0;types[i]!='\0';i++)
fwrite(&types[i],1,1,fp1);
for(i=0;type[i]!='\0';i++)
fwrite(&type[i],1,1,fp1);
fwrite(&Return,1,1,fp1);
k=2;
for(i=0;i<7;i++)
titles1[i]=(char)tolower((int)titles[i]);
head=sp=create(20);
do
{
switch(T_FLAG)
{
case T_NULL:
fread(&sp->text,1,1,fp); //find the time
if(sp->text=='t')
{
p=head;
while(p!=sp)
{
if(p->text==' '&&p->next->text=='a'&&p->next->next->text=='t'&&p->next->next==sp)
{
T_FLAG=T_DATE;
head=sp->next;
break;
}
p=p->next;
}
} //find the source
if(sp->text==':')
{
p=head;
while(p!=sp)
{
if(p->text==Srcs[0]&&p->next->text==Srcs[1])
{
flag=1;
q=p->next->next;
for(k=2;k<10;k++,q=q->next)
if(q->text!=Srcs[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_SOURCE;
head=sp;
break;
}
}
p=p->next;
}
} if(sp->text=='>')
{
while(head!=sp)
if(head->text!='<')
head=head->next;
else
{
//find the title //capital
p=head->next;
if(p->text==titles[1])
{
flag=1;
p=p->next;
for(k=2;k<7;k++,p=p->next)
if(p->text!=titles[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_TITLE;
head=p->next;
break;
}
} //lower
p=head->next;
if(p->text==titles1[1])
{
flag=1;
p=p->next;
for(k=2;k<7;k++,p=p->next)
if(p->text!=titles1[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_TITLE;
head=p->next;
break;
}
}
//find the context
p=head->next;
if(p->text=='p'&&p->next->text=='>')
{
T_FLAG=T_CONTEXT;
head=p->next->next;
break;
} p=head->next;
if(p->text=='P'&&p->next->text=='>')
{
T_FLAG=T_CONTEXT;
head=p->next->next;
break;
}
head=head->next;
}
}
sp=sp->next;
break;
default:
switch(T_FLAG)
{
case T_TITLE:
if(!flag3)
{
types="标题:\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
break;
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
flag3=1;
}
T_FLAG=T_NULL;
break;
case T_CONTEXT:
if(flag1==0)
types="正文:\0";
else
types=" \0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
flag1=1;
break;
case T_SOURCE:
if(flag2==0)
types="来源:http\0";
else
types=" http\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
flag2=1;
break;
case T_DATE:
types="时间:\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='F')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
break;
}
}
}while(!feof(fp));
for(i=0;i<19;i++)
{
p=head->next;
free(head);
head=p;
}
}
程序:
#include "stdio.h"
#include "stdlib.h"
#include "ctype.h"#define T_NULL 0
#define T_TITLE 1
#define T_CONTEXT 2
#define T_SOURCE 3
#define T_DATE 4struct Node{
char text;
struct Node *next;
};struct Node *create(int i)
{
struct Node *head,*p,*q;
int j;
for(j=0;j<i;j++)
{
q=(struct Node *)malloc(sizeof(struct Node));
if(!j)
head=p=q;
else
{
p->next=q;
p=q;
}
}
p->next=head;
return(head);
}void main()
{
FILE *fp,*fp1;
struct Node *sp,*head,*p,*q;
char *ofname,*sfname,*types,ch;
char titles[8]={'<','T','I','T','L','E','>','\0'},titles1[8];
char Srcs[11]={'h','r','e','f','=','h','t','t','p',':','\0'};
char Return='\n';
char type[15];
int i,k,flag,flag1=0,flag2=0,flag3=0,T_FLAG=T_NULL;
ofname=(char *)calloc(20,1);
sfname=(char *)calloc(20,1);
types=(char *)calloc(10,1);
printf("Enter the type of the web:");
scanf("%s",type);
printf("Enter the name of opened file:");
scanf("%s",ofname);
printf("Enter the name of saved file:");
scanf("%s",sfname);
if((fp=fopen(ofname,"r"))==NULL)
{
printf("\ncann't open the file.\n");
return;
} if((fp1=fopen(sfname,"w+"))==NULL)
{
printf("\ncann't open the file.\n");
return;
} types="类型:\0";
for(i=0;types[i]!='\0';i++)
fwrite(&types[i],1,1,fp1);
for(i=0;type[i]!='\0';i++)
fwrite(&type[i],1,1,fp1);
fwrite(&Return,1,1,fp1);
k=2;
for(i=0;i<7;i++)
titles1[i]=(char)tolower((int)titles[i]);
head=sp=create(20);
do
{
switch(T_FLAG)
{
case T_NULL:
fread(&sp->text,1,1,fp); //find the time
if(sp->text=='t')
{
p=head;
while(p!=sp)
{
if(p->text==' '&&p->next->text=='a'&&p->next->next->text=='t'&&p->next->next==sp)
{
T_FLAG=T_DATE;
head=sp->next;
break;
}
p=p->next;
}
} //find the source
if(sp->text==':')
{
p=head;
while(p!=sp)
{
if(p->text==Srcs[0]&&p->next->text==Srcs[1])
{
flag=1;
q=p->next->next;
for(k=2;k<10;k++,q=q->next)
if(q->text!=Srcs[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_SOURCE;
head=sp;
break;
}
}
p=p->next;
}
} if(sp->text=='>')
{
while(head!=sp)
if(head->text!='<')
head=head->next;
else
{
//find the title //capital
p=head->next;
if(p->text==titles[1])
{
flag=1;
p=p->next;
for(k=2;k<7;k++,p=p->next)
if(p->text!=titles[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_TITLE;
head=p->next;
break;
}
} //lower
p=head->next;
if(p->text==titles1[1])
{
flag=1;
p=p->next;
for(k=2;k<7;k++,p=p->next)
if(p->text!=titles1[k])
{
flag=0;
break;
}
if(flag)
{
T_FLAG=T_TITLE;
head=p->next;
break;
}
}
//find the context
p=head->next;
if(p->text=='p'&&p->next->text=='>')
{
T_FLAG=T_CONTEXT;
head=p->next->next;
break;
} p=head->next;
if(p->text=='P'&&p->next->text=='>')
{
T_FLAG=T_CONTEXT;
head=p->next->next;
break;
}
head=head->next;
}
}
sp=sp->next;
break;
default:
switch(T_FLAG)
{
case T_TITLE:
if(!flag3)
{
types="标题:\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
break;
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
flag3=1;
}
T_FLAG=T_NULL;
break;
case T_CONTEXT:
if(flag1==0)
types="正文:\0";
else
types=" \0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
flag1=1;
break;
case T_SOURCE:
if(flag2==0)
types="来源:http\0";
else
types=" http\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='<')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
flag2=1;
break;
case T_DATE:
types="时间:\0";
i=0;
while(types[i]!='\0')
{
fwrite(&types[i],1,1,fp1);
i++;
}
while(1)
{
fread(&ch,1,1,fp);
if(ch=='F')
{
sp->text=ch;
break;
}
fwrite(&ch,1,1,fp1);
}
fwrite(&Return,1,1,fp1);
T_FLAG=T_NULL;
break;
}
}
}while(!feof(fp));
for(i=0;i<19;i++)
{
p=head->next;
free(head);
head=p;
}
}
解决方案 »
- VC6.0 自定义类不显示在类视图中,但在文件视图中有.CPP .H文件
- 如何在c++中调用这种格式命名空间的c#的dll?
- 网络链路不稳定,怎么办
- 带 CBS_OWNERDRAWFIXED 的 CComboBox 如何动态创建
- 如何把工具栏所占的位置也隐藏了?
- 高分求解:如何给其他用户的窗口PostMessage?
- 怎么访问PCI卡,直接使用createfile,readfile,writefile可以吗?
- 一个关于文档视的问题,请指教
- acptvc(微软全球技术中心 VC技术支持),在吗?请教一个问题!
- 基于对话框的程序怎么修改静态文本框和按钮控件上的字体??
- 请高手推荐几篇介绍COM的文章
- 知道对方的IP或用户名,怎么知道对方使用的是什么操作系统?
这里有个很好的例子
使用ADO封装类的数据库程序开发实例[第二版]http://www.vckbase.com/document/viewdoc.asp?id=668