zoukankan      html  css  js  c++  java
  • 使用C语言将IE收藏夹生成HTML

    IE收藏夹里收藏的链接很多,查找也不方便,使用C编写一个小工具,可以将收藏夹里的链接文件生成到一个HTML文件上。

    源码还有许多地方需要优化,后续我会优化,先分享出来。目的主要是为了练习C语言,这个代码中使用了最原始的C语言代码,比如结构体,指针,字符串操作,链表,目录遍历,读写文件等。

    代码中一些地方原本是基于windows的C++写成,后来改成使用标准C函数。如果您和我一样,好多年不用C了,不防看看,重温当前学C的感觉。

    请看官拍砖。

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #include   <iostream>
    #include   <io.h>
    #include   <direct.h>
    #include   <string>
    #include   <vector>
    #include   <iomanip>
    #include   <ctime>
    
    using   namespace   std;
    
    
    #define BUFLEN 1024
    
    typedef   struct   UrlFile
    { 
    	char   filename[200]; 
    	char   url[300]; 
    	char   path[300]; 
    	char   urltype[100];
    	struct   UrlFile  *next; 
    }UrlFileModel;
    
    void  getFiles( string path );
    char* getUrl(char* filename);
    
    UrlFileModel Start; 
    UrlFileModel *FileList;
    
    int main()
    {
    	FILE *file;
    	int index=0;
    	UrlFileModel *tmpnode;
    
    	Start.next=NULL;
    	FileList=&Start;
    
    	
    	getFiles( "C:\Users\ldy\Favorites\" );
    
    	
    	tmpnode=&Start;
    
    	while(tmpnode) 
    	{ 
    		char* url=getUrl(tmpnode->path);
    
    		if (url)
    		{
    			//printf("%s",url); //此处导致url字符串的截取
    			strcpy(tmpnode->url,url); 
    		}
    
    		tmpnode=tmpnode-> next; 
    	}  
    
    
    	if ((file=fopen("test.html","w"))==NULL) /*打开只写的文本文件*/
    	{
    		printf("cannot open file!");
    		exit(0);
    	}
    
    	tmpnode=&Start;
    
    	fputs("<html><head><title></title></head><body><table>",file);
    
    	while(tmpnode) 
    	{
    		index++;
    		printf( "%s
     ",tmpnode-> filename); 
    		//printf( "%s
     ",tmpnode->urltype); 
    
    		fprintf(file,"<tr><td>%d</td><td><a href='%s' target='_blank'>%s</a></td><td>%s</td></tr>",index,tmpnode->url,tmpnode-> filename,tmpnode-> urltype);
    
    		tmpnode=tmpnode-> next; 
    	}  
    
    	fputs("</table></body></html>",file);
    	fclose(file); /*关文件*/
    	
    	printf( "总计收藏的页面:%d
     ",index); 
    	fgetchar();
    }
    
    
    void getFiles( string path )
    {
    	//文件句柄
    	long   hFile   =   0;
    	//文件信息
    	struct _finddata_t fileinfo;
    
    	string p;
    	char urltype[]="fav";
    
    	if   ((hFile  =  _findfirst(p.assign(path).append("\*").c_str(),&fileinfo)) !=  -1)
    	{
    		do
    		{
    			//如果是目录,迭代之
    			//如果不是,加入列表
    			if ((fileinfo.attrib &  _A_SUBDIR))
    			{
    
    				if(strcmp(fileinfo.name,".") != 0  &&  strcmp(fileinfo.name,"..") != 0)
    					getFiles( p.assign(path).append("\").append(fileinfo.name) );
    			}
    			else
    			{
    				
    				FileList->next=(struct UrlFile*)malloc(sizeof(struct UrlFile));
    				FileList=FileList->next;
    				strcpy(FileList->filename,fileinfo.name); 
    				strcpy(FileList->urltype,path.c_str()); 
    				strcpy(FileList->path,p.assign(path).append("\").append(fileinfo.name).c_str()); 
    
    				FileList->next=NULL;
    
    			}
    		}   while(_findnext(hFile, &fileinfo)  == 0);
    
    		_findclose(hFile);
    
    	}
    
    
    }
    
    
    char* getUrl(char* filename)
    {
    	FILE *file;
    	char buf[BUFLEN];
    	int len=0,i=0;
    
    	char *delim = "BASEURL=";
    
    	char* tmpptr;
    
    	file=fopen(filename,"r");
    	if (!file)
    	{
    		printf("file open error!");
    		return NULL;
    	}
    
    	while (fgets(buf,BUFLEN,file))
    	{
    		tmpptr=strstr(buf,"BASEURL=");
    		if (!tmpptr)
    		{
    			continue;
    		}
    		int len=strlen(tmpptr);
    		if (len>0)
    		{
    			tmpptr=strtok(tmpptr,"BASEURL=");
    			printf("%s
    ",tmpptr);
    			break;
    		}
    	}
    
    	fclose(file);
    	return tmpptr;
    }
    
  • 相关阅读:
    比特币脚本及交易分析
    分析比特币网络:一种去中心化、点对点的网络架构
    比特币如何挖矿(挖矿原理)-工作量证明
    比特币所有权及隐私问题-非对称加密应用
    区块链记账原理
    用Python从零开始创建区块链
    基础语法-算术运算符
    基础语法-数据类型转换
    基础语法-数据类型介绍及使用
    基础语法-变量介绍
  • 原文地址:https://www.cnblogs.com/daoyuly/p/3407730.html
Copyright © 2011-2022 走看看