『求助』调试一个将GOOGLE书签导入IE收藏夹的小程序
这是我从网上下载的一个小程序,但是总是编译失败,请高手帮忙给修改修改。谢谢#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#define BUFSIZE 1024
#define TRUE 1
#define FALSE 0
int position;
int state;
char *intercept;
char chs[2];
char *user;
char *url;
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();
int main(void){
char srcpath[BUFSIZE];
printf("收藏夹转换小程序,目的是将GoogleBookmarks导入到Internet Explorer收藏夹,本程序功能相对简单,如发生意外问题,请谅解。");
printf("\n请输入GoogleBookmarks.html存放的路径:");
scanf("%s",srcpath);
printf("\n准备将GoogleBookmarks中收藏导入到Internet Explorer收藏中......");
delDat();
readgmk(srcpath);
readDat();
printf("\n成功导入到Internet Explorer收藏夹");
return 0;
}
void readgmk(char *filename){
char tmp[BUFSIZE];
FILE *fp;
if((fp=fopen(filename,"r"))==NULL){
printf("读取gmark文件失败");
}else{
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-1);
saveDat(str3);
setUrlName(str3);
free(str1);
free(str2);
free(str3);
}
}
int isCharsContain(char *s1,char *s2){
char *s;
int i,counter,is;
counter=0;
s=strchr(s1,s2[0]);
if(s){
for(i=0;i<strlen(s);i++){
if(i<strlen(s2)){
if(s2==s){
counter++;
}
}
}
if(counter==strlen(s2)){
is=TRUE;
}else{
is=FALSE;
}
}
return is;
}
int getCharsPosition(char *s1,char *s2){
int i;
char *str;
if(isCharsContain(s1,s2)==TRUE){
for(i=0;i<strlen(s1);i++){
if(s1==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==s2){
counter++;
}
}
if(counter==length1){
state=TRUE;
}
}else{
state=FALSE;
}
return state;
}
char *interceptChars(char *str,int start,int end){
int i,length;
char *pstr;
pstr=(char*)malloc(sizeof(char)+1);
for(i=start;i<end;i++){
if(i==start){
strcpy(pstr,char2chars(str));
}else{
length=strlen(pstr)+strlen(char2chars(str));
pstr=(char*)realloc(pstr,length+1);
strcat(pstr,char2chars(str));
}
}
intercept=pstr;
return intercept;
}
void delDat(){
char *file;
FILE *fp;
file="temp.dat";
if((fp=fopen(file,"r"))!=NULL){
remove(file);
}
fclose(fp);
}
void saveDat(char *str){
FILE *fp;
if((fp=fopen("temp.dat","r"))!=NULL){
fp=fopen("temp.dat","a");
fprintf(fp,"%s%s",str,"\n");
}else{
fp=fopen("temp.dat","w");
fprintf(fp,"%s%s",str,"\n");
}
fclose(fp);
}
void createUrl(char *fullpath,char *content){
FILE *fp;
fp=fopen(fullpath,"w");
fprintf(fp,"%s%s","[InternetShortcut]","\n");
fprintf(fp,"%s%s%s","URL=",content,"\n");
fclose(fp);
}
char *getLoginUser(){
LPTSTR lpszSystemInfo;
DWORD cchBuff=BUFSIZE;
TCHAR tchBuffer[BUFSIZE];
lpszSystemInfo=tchBuffer;
if(GetUserName(lpszSystemInfo,&cchBuff)){
user=(char*)lpszSystemInfo;
}
return user;
}
char *spellUrl(){
char *url1,*url2,*pstr,*user;
int length;
url1="C:\\Documents and Settings\\";
url2="\\Favorites\\";
user=getLoginUser();
length=strlen(url1)+strlen(url2)+strlen(user)+1;
pstr=(char*)malloc((sizeof(char)+1)+length);
strcpy(pstr,url1);
strcat(pstr,user);
strcat(pstr,url2);
url=pstr;
return url;
}
void readDat(){
FILE *fp;
char *path;
char tmp[BUFSIZE];
if((fp=fopen("temp.dat","r"))!=NULL){
fp=fopen("temp.dat","r");
while(fgets(tmp,BUFSIZE,fp)!=NULL){
path=spellUrl();
strcat(path,getUrlName());
strcat(path,".url");
createUrl(path,tmp);
}
}else{
printf("temp.dat文件没有找到\n");
}
fclose(fp);
}
void setUrlName(char *str){
int local1,local2;
char *str1,*str2;
local1=getCharsPosition(str,".");
str1=interceptChars(str,local1+1,strlen(str));
local2=getCharsPosition(str1,".");
str2=interceptChars(str1,0,local2);
urlName=str2;
}
char *getUrlName(){
if(urlName!=NULL){
return urlName;
}else{
urlName=NULL;
}
return urlName;
}
char *char2chars(char ch){
chs[0]=ch;
chs[1]='\0';
return chs;
}