Cod sursa(job #1343525)

Utilizator cfandreiCeapa Andrei Florin cfandrei Data 15 februarie 2015 16:14:37
Problema Convertor Scor 50
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.77 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 4096000

int main()
{
    char *aux, *head, *headaux, JSON[NMAX], *JSON1;
    int i = 0, k;
    FILE *f, *g;

    f = fopen ("convertor.in", "r" );
    g = fopen ("convertor.out", "w") ;

    fscanf(f,"%[^&]s",JSON);
    JSON1 = strdup(JSON) ;
    head = strtok(JSON,"}");
    headaux = strtok(head,",{:");
    while ( headaux != NULL ) {
	if ( i % 2 == 1 ) {
		int j1 ,j2, j;
		for ( j = 0 ; j < strlen(headaux) ; j++ ) {
		if ( (headaux[j] >= 'A' && headaux[j] <= 'Z') || (headaux[j] >= 'a' && headaux[j] <= 'z') || (headaux[j] >= '0' && headaux[j] <= '9')  ) j2 = j ;
		}
		for ( j = strlen(headaux) - 1 ; j >= 0 ; j-- ) {
		if ( (headaux[j] >= 'A' && headaux[j] <= 'Z') || (headaux[j] >= 'a' && headaux[j] <= 'z') || (headaux[j] >= '0' && headaux[j] <= '9')  ) j1 = j ;
		}
		for ( j = j1 ; j <= j2 ; j++ ) {
			fprintf(g,"%c",headaux[j]);
		}
		fprintf(g,",");
	}	
//	printf("%s %d\n",headaux,i);
	headaux = strtok(NULL,",{:");
	i = i + 1 ;
    }
    k = i ;
    i = 0 ;
    aux = strtok(JSON1,",:");
    while ( aux != NULL ){
	if ( i % 2 == 1 ) {
		int j1, j2, j;
		for ( j = 0 ; j < strlen(aux) ; j++ ) {
		if ( (aux[j] >= 'A' && aux[j] <= 'Z') || (aux[j] >= 'a' && aux[j] <= 'z') || (aux[j] >= '0' && aux[j] <= '9')  ) j2 = j ;
		}
		for ( j = strlen(aux) - 1 ; j >= 0 ; j-- ) {
		if ( (aux[j] >= 'A' && aux[j] <= 'Z') || (aux[j] >= 'a' && aux[j] <= 'z') || (aux[j] >= '0' && aux[j] <= '9')  ) j1 = j ;
		}
		for ( j = j1  ; j <= j2 ; j++ ) {
			fprintf(g,"%c",aux[j]);
		}
		fprintf(g,",");
        }
	if (  i % (k - 1) == 0 ) fprintf(g,"\n");
        //printf("%s %d\n",aux,i);
        aux = strtok(NULL,",:");
	i = i + 1 ;
    } 
    fprintf(g,"\n");

    return 0;
}