Pagini recente » Cod sursa (job #2636319) | Cod sursa (job #2819379) | Cod sursa (job #2380121) | Cod sursa (job #3123647) | Cod sursa (job #1357452)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
unsigned int dt=0;
FILE *f = fopen("convertor.in" , "rt" ), *g = fopen ("convertor.out" , "wt");
char b , *tag = NULL;
b = fgetc(f);
while ( b != '"' )
b = fgetc(f);
unsigned char *dnt = NULL, dv = 0;
while ( b != '}')
{
//b == '"'
dnt = (unsigned char *) realloc( dnt, (dv + 1) * sizeof(unsigned char) );
dnt[dv] = 0;
b = fgetc(f);
while ( b != '"')
{
fputc( b , g );
b = fgetc(f);
dnt[dv]++;
}
//printf("%d\n", dnt[dv] );
dv++;
// b == '"'
fputc(',' , g );
b = fgetc(f);//scap de "
while ( ( ( b < '1' ) || ( b > '9' ) ) && ( b != '"' ) )
b = fgetc(f);
//b fie e cifra fie e ghilimea
if ( b == '"' )
{
b = fgetc(f);
while ( b != '"')
{
tag = (char*) realloc( tag , ++dt * sizeof(char) );
tag[dt-1] = b;
b = fgetc(f);
}
}
else
{
while ( (b > 47) && ( b < 58 ) )
{
tag = (char*) realloc( tag , ++dt * sizeof(char) );
tag[dt-1] = b;
b = fgetc(f);
}
}
tag = (char*) realloc( tag , ++dt * sizeof(char) );
tag[dt-1] = ',';
b = fgetc(f);
//b == ghilimea sau spatiu sau virgula sau acolada
while ( ( b != '}' ) && ( b != '"') )
b = fgetc(f);
}
fputc( '\n' , g );
tag = (char*) realloc( tag , ++dt * sizeof(char) );
tag[dt-1] = '\0';
fputs( tag , g );
fputc( '\n' , g );
free(tag);//b == '}'
while ( b != '"' )
b = fgetc(f);
unsigned char i;
while ( b != EOF )//prima data e ","
{
i = 0;
while ( b != '}' )
{
//printf("%c" , b );
fseek( f , dnt[i] + 1, SEEK_CUR );//printf("%c" , fgetc( f ) );
i++;
b = fgetc( f );
while ( ( ( b < '1' ) || ( b > '9' ) ) && ( b != '"' ) )
b = fgetc(f);
if ( b == '"' )
{
b = fgetc(f);
while ( b != '"' )
{
fputc( b , g );
b = fgetc(f);
}
b = fgetc(f);
}
else
{
while ( (b > 47) && ( b < 58 ) )
{
fputc( b , g );
b = fgetc(f);
}
}
fputc( ',' , g );//b e spatiu virgula sau ghilimele
while ( ( b != '}' ) && ( b != '"') )
b = fgetc(f);
}
fputc( '\n' , g );
//b=='}'
b = fgetc( f );
while ( ( b != '"' ) && ( b != EOF ) )
b = fgetc( f );
}
free(dnt);
fclose(g);
fclose(f);
return 0;
}