#include<stdio.h> #include<errno.h> #include<stdlib.h> #include<string.h> #defineNOTHING0 #defineLABEL1 voiddelblank(char*str); intmain(intargc,char*argv[]) { charch,temp[50],*chp; FILE*dest,*src; intflag=NOTHING; charlabel[10]; charsublabel[10]; if(argc!=3) { printf("Usage:transcateDest_pathSrc_path\n"); exit(EXIT_FAILURE); } if((src=fopen(argv[2],"r"))==NULL) { perror("Opensrcfile:"); exit(EXIT_FAILURE); } if((dest=fopen(argv[1],"w"))==NULL) { perror("Opendestfile:"); exit(EXIT_FAILURE); } while(fgets(temp,sizeof(temp)-1,src)) { if(temp[0]==';') { temp[strlen(temp)-1]='\0'; fprintf(dest,"<!--%s-->\n",temp+1); } elseif(!strcmp(temp,"\n")&&flag==LABEL) { delblank(temp); fprintf(dest,"</%s>\n\n",label); flag=NOTHING; } elseif(temp[0]=='['&&temp[strlen(temp)-2]==']') { flag=LABEL; delblank(temp); temp[strlen(temp)-2]='\0'; strcpy(label,temp+1); fprintf(dest,"<%s>\n",temp+1); } elseif(chp=strchr(temp,'=')) { delblank(temp); temp[strlen(temp)-1]='\0'; strncpy(sublabel,temp,chp-temp); sublabel[chp-temp]='\0'; fprintf(dest,"\t<%s>%s</%s>\n",sublabel,chp+1,sublabel); } } if(flag==LABEL) fprintf(dest,"</%s>\n",label); fclose(dest); fclose(src); return0; } voiddelblank(char*str) { inti=0,j=0; for(;i<strlen(str);i++,j++) { if(str[i]=='') i++; str[j]=str[i]; } str[j]='\0'; }
test.ini
;Configurationofhttp [http] domain=www.mysite.com port=8080 cgihome=/cgi-bin ;Configurationofdb [database] server=MysqL user=myname password=toopendatabase
test.xml
<!--Configurationofhttp--> <http> <domain>www.mysite.com</domain> <port>8080</port> <cgihome>/cgi-bin</cgihome> </http> <!--Configurationofdb--> <database> <server>MysqL</server> <user>myname</user> <password>toopendatabase</password> </database>