Cod sursa(job #1361501)

Utilizator MikkennCorneci Vlad Mihai Mikkenn Data 25 februarie 2015 21:38:33
Problema Convertor Scor 100
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.02 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
char* headers(FILE *f)
{
    char *buffer;
    char *capete;
    int size =20;
    capete = malloc(size);
    int i, a = 0, p = 0, g = 0 ;
    int lg;
    buffer = malloc(1024);
 

    while (1) {
 
        fgets(buffer, 1024, f);
        lg = strlen(buffer);
        for (i = 0; i < lg; i++) {
            if (buffer[i] == ',')
                a++;
            if (buffer[i] == '}')
                return capete;
            else if (buffer[i] == ':')
                p++;
            if (a == p) {
                if (buffer[i] == '\"') {
                    g++;
                    if (g % 2 == 0) {
                        printf(",");
                    }
                }
                else if (g % 2 == 1) {
                	printf("%c", buffer[i]);
                }
            }
        }
    }
    return capete;
}
 
void corp(FILE *f)
{
    char *buffer;
    /*a nr de virgule, g nr de :*/
    int i, a = 0, p = 0, g = 0; 
    int lg;
    buffer = malloc(1024);

  	while ((fgets(buffer, 1024, f)) != NULL) {
  		lg = strlen(buffer);
  		for ( i = 0; i< lg; i++){
	  		if (buffer[i] == ','){
	  			a++;
	  		}
	  		if (buffer[i] == ':'){
	  			i++;
	  			p++;
	  		}
	  		
  			if( a < p){
  				if ( buffer[i] == '}')
	  			printf("\n");
  				if( buffer[i] == '\"'){
  					g++;
  					if( g % 2 == 0)
  						printf(",");
  				}
  				if( g % 2 == 1 && buffer[i] != '\"'){
  					printf("%c",  buffer[i]);
  				}

  				if (buffer[i] >= 48 && buffer[i] <= 57 && g % 2 ==0) {
                        printf("%c", buffer[i]);
                        if(buffer[i+1] < 48 || buffer[i+1] >57)
                        	printf(",");
                }

  			}

  		}
  		//printf("%d %d", a, p);
  		
    } 
}
 
int main()
{
    char *capete;
    FILE *f;
    f = fopen("convertor.in", "r");
    freopen("convertor.out", "w", stdout);
    capete = headers(f);
    fseek ( f , 0 , SEEK_SET );
    printf("%s\n", capete);
    corp(f);
    fclose(f);
    //fputs(capete, stdout);
    return 0;
}