使用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\n ",tmpnode-> filename);
//printf( "%s\n ",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\n ",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\n",tmpptr);
break;
}
} fclose(file);
return tmpptr;
}
使用C语言将IE收藏夹生成HTML的更多相关文章
- 基于Metronic的Bootstrap开发框架经验总结(12)--页面链接收藏夹功能的实现
在一个系统里面,往往有很多菜单项目,每个菜单项对应一个页面,一般用户只需要用到一些常用的功能,如果每次都需要去各个层次的菜单里面去找对应的功能,那确实有点繁琐.特别是在菜单繁多,而客户又对系统整体不熟 ...
- paip.重装系统后firefox火狐收藏夹的恢复
paip.重装系统后firefox火狐收藏夹的恢复 1.使用procmon跟踪ff保存收藏时候的读写文件.. D:\Users\attilax\AppData\Roaming\Mozilla\Fire ...
- Django Web开发【3】创建网络收藏夹
这一节我们将继续一个创建网络收藏夹应用,并学习视图.模型以及模板的处理过程. Django是一个MVC开发框架,但是它的控制器对应的为view,而视图对应为模板(template),模型对应model ...
- 如何在地址栏(title标签里)和收藏夹里 加上网站的标志ICO、LOGO图片
第一步:首先你必须要制作一个看起来既清楚又容易辨识的.ico格式的小图片. 我们将图标的大小定义为16x16 像素.此外在制作图形文件的时候,你可能需要把色盘设定成只使用标准的 16 色 Window ...
- js drag drop 收藏夹拖拽移除的简单例子
代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title& ...
- 基于Metronic的Bootstrap开发框架经验总结(13)--页面链接收藏夹功能的实现2(利用Sortable进行拖动排序)
在上篇随笔<基于Metronic的Bootstrap开发框架经验总结(12)--页面链接收藏夹功能的实现>上,我介绍了链接收藏夹功能的实现,以及对收藏记录的排序处理.该篇随笔主要使用功能按 ...
- 修复 Windows7 资源管理器左侧收藏夹无法展开问题
相信大家在网上搜多到的解决办法大多数都是修改注册表,但是这个办法多数是无效的 1.运行regedit 2.展开到HKEY_CLASSES_ROOT\lnkfile 3.添加一个字符串值:IsShort ...
- JQUERY 实现加入收藏夹功能
关于"加入收藏"的代码,很多人都不会重视,一般情况是随便在网上搜一个代码放在页面里就草草了事了.可是都没有做到主流浏览器的兼容.下面分享一段使用 jQuery 实现加入收藏夹的功能 ...
- 设为首页 添加到收藏夹 (share)
设为首页,添加到收藏夹 分享自:http://my.oschina.net/lyx2012/blog/60036 设为首页 和 收藏本站js代码 兼容IE,chrome,ff <script t ...
随机推荐
- postgresql运维
0. 帮助 $/home/lhl/az/pg/bin/pg_ctl --help pg_ctl is a utility to initialize, start, stop, or control ...
- 字节流与字符流(FileInputStream类和FileOutputStream类)
FileInputStream类和FileOutputStream类中,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流.例如: FileInputSte ...
- 游戏制作之路:游戏引擎选择、Mac下和Windows下UnrealEngine 4体验对比、文档及其他
UnrealEngine 4和Unity3d的选择 订阅了UrealEngine4(UE4)开发者.我开始做网站用的是ASP.NET和C#,之后做网站虽然换用更方便的PHP(因为做的都是小网站).我想 ...
- Web3D编程总结——3D碰撞检测初探
自己动手写一个方法比分析他人的写的方法困难很多,由此而来的对程序的进一步理解也是分析别人的代码很难得到的. 一.先来几张效果图: 1.场景中有两个半径为1的球体,蓝色线段从球心出发指向球体的“正向” ...
- 转: 带你玩转Visual Studio——带你理解多字节编码与Unicode码
上一篇文章带你玩转Visual Studio——带你跳出坑爹的Runtime Library坑帮我们理解了Windows中的各种类型C/C++运行时库及它的来龙去脉,这是C++开发中特别容易误入歧途的 ...
- oauth协议
微博 : 新浪 腾讯 OAuth 新浪微博 APP开发 步骤:1.注册新浪开发者账号 获取以下信息 client_id 123456 标示应用身份的 唯一的 有的也叫App Key sec ...
- Gulp学习指南之CSS合并、压缩与MD5命名及路径替换(转载)
本文转载自: Gulp学习指南之CSS合并.压缩与MD5命名及路径替换
- 解除SQL对组件"Ad Hoc Distributed Queries"的"STATEMENT'OpenRowset OpenDatasource"的访问
SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问,因为此组件已作为 ...
- 自定义AlertView实现模态对话框
在Windows应用程序中,经常使用模态(Model)对话框来和用户进行简单的交互,比如登录框.在IOS应用程序中,有时我们也希望做同样的事情.但IOS的UI库中,没有模态对话框,最接近那个样子的应该 ...
- windows平台(不包括ARM的CE)通用的压缩和解压缩
通用是相对的,这里指的是xp和win7(其他版本我没测试过,不要用不要来找我) #define CMP_FRM COMPRESSION_FORMAT_LZNT1|COMPRESSION_ENGINE_ ...