本文主要是介绍如何将google书签导出到IE,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用自己的名字重新注册了一个gmail的邮箱,想将原来google用户下的书签导入到新的用户下,但google marker只有从IE导入的功能,于是只能采用一个间接的方法,先将google书签导出,其格式为.html,用记事本打开该文件并用ANSI格式另存为文本文件,I然后再用一个简单的程序读取另存后的文件,在IE收藏夹目录下建立相应的书签,然后再将IE收藏夹导入到新的google marker。下面是该转化小程序,我在网上搜到的都是同一段程序,但原程序有问题,包括算法本身的逻辑错误,以及很多语言错误,还好,我喜欢读别人的程序,所以我仍在原程序的逻辑基础上把它调通了,现在可以运行了。由于是好几天前做的事, 原程序链接我忘了,今天又搜了一下,没找到同一个链接,但下面这个链接也引用了这个程序,基本一样,为尊重原作者,特列出: http://www.vcgood.com/forum_posts.asp?TID=2033。 #include < stdio.h >
#include < stdlib.h >
#include < string .h >
#include < windows.h >
#define BUFSIZE 5024
#define TRUE 1
#define FALSE 0
int position;
int state;
int sucImportNum;
int failImportNum;
char * intercept;
char chs[ 2 ];
char * user;
char url[BUFSIZE];
char urlFolder[ 1024 ];
char * urlName;
/**/ /*
函数名:读取GoogleBookmarks函数
功能:读取GoogleBookmarks中的内容
参数列表:
char *filename 文件名
返回值:void
*/
void readgmk( char * filename);
/**/ /*
函数名:解析格式函数
功能:解析GoogleBookmarks格式
参数列表:
char *line 文件名
返回值:void
*/
void analyseFormat( char * line);
/**/ /*
函数名:判断字符串包含函数
功能:判断字符串1中是否包含字符串2
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 1为true 0为false
*/
int isCharsContain( char * s1, char * s2);
/**/ /*
函数名:判断字符串位置函数
功能:判断字符串2在字符串1中的首次出现位置
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 位置信息从0开始,没找到返回-1
*/
int getCharsPosition( char * s1, char * s2);
/**/ /*
函数名:判断字符串相等函数
功能:判断字符串1和字符串2相等
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 1为true 0为false
*/
int isCharsEquals( char * s1, char * s2);
/**/ /*
函数名:截取子字符串函数
功能:截取字符串中从开始位置到结束位置的子串
参数列表:
char *str 字符串
int start 开始位置,从0开始
int end 结束位置
返回值:截取后的字符串
*/
char * interceptChars( char * str, int start, int end);
/**/ /*
函数名:字符转字符串函数
功能:将字符转化为字符串
参数列表:
char ch 字符
返回值:转换后字符串
*/
char * char2chars( char ch);
/**/ /*
函数名:保存DAT文件函数
功能:保存到DAT文件内
参数列表:
char *str 字符串
返回值:void
*/
void saveDat( char * str);
/**/ /*
函数名:删除DAT文件函数
功能:删除DAT文件
参数列表:
void
返回值:void
*/
void delDat();
/**/ /*
函数名:读取DAT文件函数
功能:读取DAT文件
参数列表:
void
返回值:void
*/
void readDat();
/**/ /*
函数名:创建URl文件函数
功能:创建URL文件
参数列表:
char *fullpath 完整路径名
char *content url文件内容
返回值:void
*/
void createUrl( char * fullpath, char * content);
/**/ /*
函数名:获得当前登录用户函数
功能:获得当前登录用户名
参数列表:
void
返回值:当前登录用户名
*/
char * getLoginUser();
/**/ /*
函数名:拼装URL函数
功能:拼装URL文件所在完整路径
参数列表:
void
返回值:当前登录用户名
*/
char * spellUrl();
/**/ /*
函数名:设置URL文件名函数
功能:设置URL文件名
参数列表:
char *str 字符串
返回值:void
*/
void setUrlName( char * str);
/**/ /*
函数名:获得URL文件名函数
功能:获得URL文件名
参数列表:
void
返回值:URL文件名
*/
char * getUrlName();
/**/ /*
删除字符串里的指定字符,并用空格取代
*/
void deleteCharFromChars( char * str, char chr);
int main( void ) ... {
char srcpath[BUFSIZE];
printf("收藏夹转换小程序,目的是将GoogleBookmarks导入到Internet Explorer收藏夹,本程序功能相对简单,如发生意外问题,请谅解。");
printf(" 请输入GoogleBookmarks.html存放的路径:");
scanf("%s",srcpath);
printf(" 准备将GoogleBookmarks中收藏导入到Internet Explorer收藏中......");
delDat();
readgmk(srcpath);
// readDat();
printf(" 成功导入%d个书签到Internet Explorer收藏夹 ",sucImportNum);
printf(" %d个书签导入失败 ",failImportNum);
return 0;
}
void readgmk( char * filename) ... {
char tmp[BUFSIZE];
FILE *fp;
if((fp=fopen(filename,"r"))==NULL)...{
printf("读取gmark文件失败");
}else...{
sucImportNum=0;
failImportNum=0;
while(fgets(tmp,BUFSIZE,fp)!=NULL)...{
analyseFormat(tmp);
}
}
fclose(fp);
}
void analyseFormat( char * line) ... {
int local1,local2,local3;
char *str1,*str2,*str3;
if(isCharsContain(line,"HREF")==TRUE)...{
local1=getCharsPosition(line,"HREF");
str1=interceptChars(line,local1,strlen(line));
local2=getCharsPosition(str1,""");
str2=interceptChars(str1,local2+1,strlen(str1));
local3=getCharsPosition(str2,""");
str3=interceptChars(str2,0,local3);
// saveDat(str3);
setUrlName(line);
if (str3!=NULL&&urlName!=NULL)
...{
strcpy(url,spellUrl());
strcat(url,urlFolder);
strcat(url,"/");
strcat(url,getUrlName());
strcat(url,".url");
createUrl(url,str3);
}
free(str1);
free(str2);
free(str3);
}
else if (isCharsContain(line,"</H3>")==TRUE)//判断是否为书签文件夹所在的行
...{
local1=getCharsPosition(line,"">");
str1=interceptChars(line,local1+2,strlen(line));
local2=getCharsPosition(str1,"<");
str2=interceptChars(str1,0,local2);
strcpy(urlFolder,str2);
strcpy(url,spellUrl());
strcat(url,urlFolder);
CreateDirectory(url,NULL);
free(str1);
free(str2);
}
}
int isCharsContain( char * s1, char * s2) ... {
char *s;
int i,counter,head,is=FALSE;
counter=0;
head=0;
int len=strlen(s1)-strlen(s2);
while (head<=len)
...{
counter=0;
for(i=0;i<strlen(s2);i++)...{
if(s2[i]==s1[i+head])...{
counter++;
}
else
...{
is=FALSE;
break;
}
}
if (counter==strlen(s2))
...{
return TRUE;
}
head++;
}
// s=strchr(s1,s2[0]);
// if(s){
// for(i=0;i<strlen(s2);i++){
// if(i<strlen(s2)){
// if(s2[i]==s[i]){
// counter++;
// }
// }
// }
// if(counter==strlen(s2)){
// is=TRUE;
// }else{
// is=FALSE;
// }
// }
return FALSE;
}
int getCharsPosition( char * s1, char * s2) ... {
int i;
char *str;
if(isCharsContain(s1,s2)==TRUE)...{
for(i=0;i<strlen(s1);i++)...{
if(s1[i]==s2[0])...{
str=interceptChars(s1,i,i+strlen(s2));
if(isCharsEquals(str,s2)==TRUE)...{
free(str);
position=i;
return position;
}
}
}
}else...{
position=-1;
}
return position;
}
int isCharsEquals( char * s1, char * s2) ... {
int i,counter,length1,length2;
counter=0;
length1=strlen(s1);
length2=strlen(s2);
if(length1==length2)...{
for(i=0;i<length1;i++)...{
if(s1[i]==s2[i])...{
counter++;
}
}
if(counter==length1)...{
state=TRUE;
}
else
...{
state=FALSE;
}
}else...{
state=FALSE;
}
return state;
}
char * interceptChars( char * str, int start, int end) ... {
if (start>=strlen(str)||end>strlen(str)||end<=start)
...{
return NULL;
}
int i,length;
char *pstr;
pstr=(char *)malloc(sizeof(char)*(end-start+1));
strcpy(pstr,char2chars(str[start]));
for (i=1;i<end-start;i++)
...{
strcat(pstr,char2chars(str[i+start]));
}
// pstr[i]='
#include < stdlib.h >
#include < string .h >
#include < windows.h >
#define BUFSIZE 5024
#define TRUE 1
#define FALSE 0
int position;
int state;
int sucImportNum;
int failImportNum;
char * intercept;
char chs[ 2 ];
char * user;
char url[BUFSIZE];
char urlFolder[ 1024 ];
char * urlName;
/**/ /*
函数名:读取GoogleBookmarks函数
功能:读取GoogleBookmarks中的内容
参数列表:
char *filename 文件名
返回值:void
*/
void readgmk( char * filename);
/**/ /*
函数名:解析格式函数
功能:解析GoogleBookmarks格式
参数列表:
char *line 文件名
返回值:void
*/
void analyseFormat( char * line);
/**/ /*
函数名:判断字符串包含函数
功能:判断字符串1中是否包含字符串2
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 1为true 0为false
*/
int isCharsContain( char * s1, char * s2);
/**/ /*
函数名:判断字符串位置函数
功能:判断字符串2在字符串1中的首次出现位置
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 位置信息从0开始,没找到返回-1
*/
int getCharsPosition( char * s1, char * s2);
/**/ /*
函数名:判断字符串相等函数
功能:判断字符串1和字符串2相等
参数列表:
char *s1 字符串1
char *s2 字符串2
返回值:int 1为true 0为false
*/
int isCharsEquals( char * s1, char * s2);
/**/ /*
函数名:截取子字符串函数
功能:截取字符串中从开始位置到结束位置的子串
参数列表:
char *str 字符串
int start 开始位置,从0开始
int end 结束位置
返回值:截取后的字符串
*/
char * interceptChars( char * str, int start, int end);
/**/ /*
函数名:字符转字符串函数
功能:将字符转化为字符串
参数列表:
char ch 字符
返回值:转换后字符串
*/
char * char2chars( char ch);
/**/ /*
函数名:保存DAT文件函数
功能:保存到DAT文件内
参数列表:
char *str 字符串
返回值:void
*/
void saveDat( char * str);
/**/ /*
函数名:删除DAT文件函数
功能:删除DAT文件
参数列表:
void
返回值:void
*/
void delDat();
/**/ /*
函数名:读取DAT文件函数
功能:读取DAT文件
参数列表:
void
返回值:void
*/
void readDat();
/**/ /*
函数名:创建URl文件函数
功能:创建URL文件
参数列表:
char *fullpath 完整路径名
char *content url文件内容
返回值:void
*/
void createUrl( char * fullpath, char * content);
/**/ /*
函数名:获得当前登录用户函数
功能:获得当前登录用户名
参数列表:
void
返回值:当前登录用户名
*/
char * getLoginUser();
/**/ /*
函数名:拼装URL函数
功能:拼装URL文件所在完整路径
参数列表:
void
返回值:当前登录用户名
*/
char * spellUrl();
/**/ /*
函数名:设置URL文件名函数
功能:设置URL文件名
参数列表:
char *str 字符串
返回值:void
*/
void setUrlName( char * str);
/**/ /*
函数名:获得URL文件名函数
功能:获得URL文件名
参数列表:
void
返回值:URL文件名
*/
char * getUrlName();
/**/ /*
删除字符串里的指定字符,并用空格取代
*/
void deleteCharFromChars( char * str, char chr);
int main( void ) ... {
char srcpath[BUFSIZE];
printf("收藏夹转换小程序,目的是将GoogleBookmarks导入到Internet Explorer收藏夹,本程序功能相对简单,如发生意外问题,请谅解。");
printf(" 请输入GoogleBookmarks.html存放的路径:");
scanf("%s",srcpath);
printf(" 准备将GoogleBookmarks中收藏导入到Internet Explorer收藏中......");
delDat();
readgmk(srcpath);
// readDat();
printf(" 成功导入%d个书签到Internet Explorer收藏夹 ",sucImportNum);
printf(" %d个书签导入失败 ",failImportNum);
return 0;
}
void readgmk( char * filename) ... {
char tmp[BUFSIZE];
FILE *fp;
if((fp=fopen(filename,"r"))==NULL)...{
printf("读取gmark文件失败");
}else...{
sucImportNum=0;
failImportNum=0;
while(fgets(tmp,BUFSIZE,fp)!=NULL)...{
analyseFormat(tmp);
}
}
fclose(fp);
}
void analyseFormat( char * line) ... {
int local1,local2,local3;
char *str1,*str2,*str3;
if(isCharsContain(line,"HREF")==TRUE)...{
local1=getCharsPosition(line,"HREF");
str1=interceptChars(line,local1,strlen(line));
local2=getCharsPosition(str1,""");
str2=interceptChars(str1,local2+1,strlen(str1));
local3=getCharsPosition(str2,""");
str3=interceptChars(str2,0,local3);
// saveDat(str3);
setUrlName(line);
if (str3!=NULL&&urlName!=NULL)
...{
strcpy(url,spellUrl());
strcat(url,urlFolder);
strcat(url,"/");
strcat(url,getUrlName());
strcat(url,".url");
createUrl(url,str3);
}
free(str1);
free(str2);
free(str3);
}
else if (isCharsContain(line,"</H3>")==TRUE)//判断是否为书签文件夹所在的行
...{
local1=getCharsPosition(line,"">");
str1=interceptChars(line,local1+2,strlen(line));
local2=getCharsPosition(str1,"<");
str2=interceptChars(str1,0,local2);
strcpy(urlFolder,str2);
strcpy(url,spellUrl());
strcat(url,urlFolder);
CreateDirectory(url,NULL);
free(str1);
free(str2);
}
}
int isCharsContain( char * s1, char * s2) ... {
char *s;
int i,counter,head,is=FALSE;
counter=0;
head=0;
int len=strlen(s1)-strlen(s2);
while (head<=len)
...{
counter=0;
for(i=0;i<strlen(s2);i++)...{
if(s2[i]==s1[i+head])...{
counter++;
}
else
...{
is=FALSE;
break;
}
}
if (counter==strlen(s2))
...{
return TRUE;
}
head++;
}
// s=strchr(s1,s2[0]);
// if(s){
// for(i=0;i<strlen(s2);i++){
// if(i<strlen(s2)){
// if(s2[i]==s[i]){
// counter++;
// }
// }
// }
// if(counter==strlen(s2)){
// is=TRUE;
// }else{
// is=FALSE;
// }
// }
return FALSE;
}
int getCharsPosition( char * s1, char * s2) ... {
int i;
char *str;
if(isCharsContain(s1,s2)==TRUE)...{
for(i=0;i<strlen(s1);i++)...{
if(s1[i]==s2[0])...{
str=interceptChars(s1,i,i+strlen(s2));
if(isCharsEquals(str,s2)==TRUE)...{
free(str);
position=i;
return position;
}
}
}
}else...{
position=-1;
}
return position;
}
int isCharsEquals( char * s1, char * s2) ... {
int i,counter,length1,length2;
counter=0;
length1=strlen(s1);
length2=strlen(s2);
if(length1==length2)...{
for(i=0;i<length1;i++)...{
if(s1[i]==s2[i])...{
counter++;
}
}
if(counter==length1)...{
state=TRUE;
}
else
...{
state=FALSE;
}
}else...{
state=FALSE;
}
return state;
}
char * interceptChars( char * str, int start, int end) ... {
if (start>=strlen(str)||end>strlen(str)||end<=start)
...{
return NULL;
}
int i,length;
char *pstr;
pstr=(char *)malloc(sizeof(char)*(end-start+1));
strcpy(pstr,char2chars(str[start]));
for (i=1;i<end-start;i++)
...{
strcat(pstr,char2chars(str[i+start]));
}
// pstr[i]='
这篇关于如何将google书签导出到IE的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!