#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 1024
// insert into dest string on left ++ num charconsers;
char *insert_string(char *dest, int num, const char *str)
{
int dlen, slen, i, count;
dlen = strlen(dest);
slen = strlen(str);
count = dlen - num;
for(i = 0; i <= count; i++)
{
dest[dlen+slen-i] = dest[dlen-i];
}
dest[dlen+slen+1] = '\0';
for(i = 0; i < slen; i++)
{
dest[i+num] = str[i];
}
return dest;
}
char *findstr(char *dest, char *str, char str1, char str2)
{
int i,cp,j = 0;
int len;
len = strlen(str);
for(i = 0; i < len; i++)
{
if(str[i] == str1) cp = 1, i++;
if(str[i] == str2)
{
cp = 0;
j++;
break;
}
if(cp == 1)
{
dest[j] = str[i];
j++;
}
}
dest[j] = '\0';
return dest;
}
void delspace(char str[], int len)
{
int i,j = 0;
for(i = 0; i < len; i++)
{
if(str[i] == ' ') i++;
str[j] = str[i];
j++;
}
str[j] = '\0';
return ;
}
int main(int argc, char *argv[])
{
if(argc < 3)
{
printf("Usag: two name.ini name.xml\n");
exit(1);
}
FILE *in;
FILE *out;
int i = 0, len;
char buf[SIZE];
char buf2[SIZE] = "abcdef";
char buf3[SIZE] = "1234";
char *p2, *p3;
p2 = buf2;
p3 = buf3;
in = fopen(argv[1], "r");
if(in == NULL)
{
perror("Open file argv[1]");
exit(1);
}
out = fopen(argv[2], "w+");
if(in == NULL)
{
perror("Open file argv[1]");
exit(1);
}
while(fgets(buf, 1024, in) != NULL)
{
// printf("buf=%s\n",buf);
if(strcmp(buf,"\n") == 0)
{
insert_string(buf,0,buf2);
insert_string(buf,1,"/");
fputs(buf,stdout);
fputs(buf,out);
}
i = 0;
while(buf[i] != '\0')
{
switch(buf[i]){
case ';':
buf[i] = ' ';
insert_string(buf,0,"<!--");
len = strlen(buf);
insert_string(buf,len-1," -->");
fputs(buf,stdout);
fputs(buf,out);
break;
case '[':
buf[i] = '<';
len = strlen(buf);
buf[len-2] = '>';
strcpy(buf2, buf);
fputs(buf,stdout);
fputs(buf,out);
break;
case '=':
buf[i] = '>';
insert_string(buf,0,"\t<");
findstr(buf3,buf,'<','>');
len = strlen(buf);
insert_string(buf,len-1,buf3);
insert_string(buf,len-1,"</");
len = strlen(buf);
insert_string(buf,len-1,">");
len = strlen(buf);
delspace(buf,len);
fputs(buf,stdout);
fputs(buf,out);
break;
default :
break;
}
i++;
}
}
buf[0]= '\0';
insert_string(buf,0,buf2);
insert_string(buf,1,"/");
fputs(buf,stdout);
fputs(buf,out);
fclose(in);
fclose(out);
return 0;
}
|