Cod sursa(job #1343084)

Utilizator achirialexAlexandru Achiritoaei achirialex Data 14 februarie 2015 21:06:54
Problema Convertor Scor 50
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.9 kb
/*
 ============================================================================
 Name        : convertor2.c
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

int main(void) {
	FILE *fin = fopen("convertor.in", "r");
	FILE *fout = fopen("convertor.out", "w");
	char linie[10128];
	char auxiliar[10128];
	int i, semHead = 0, contElem, lungime = 0;
	int counting = 0;
	char elements[256][1028];
	char aux;
	char *cuv;
	char *sep = "\"";
	while(fscanf(fin, "%c", &aux) != EOF){
		if(aux == '{'){
			lungime = 0;
			counting = 1;
		}

		if(aux != '\n' && counting == 1 ){
			if(isspace(aux) || aux < 0){
				if(linie[lungime - 1] != ':'){// && linie[lungime - 1] != ',' && linie[lungime - 1] != '"' ){
					linie[lungime] = aux;
					lungime++;
				}
			}
			else{
				if(aux != '"' && linie[lungime - 1] == ':'){
					linie[lungime] = '"';
					lungime++;
				}
				if(aux == ',' && linie[lungime - 1] != '"'){
					linie[lungime] = '"';
					lungime++;
				}
				if(aux == '}' && linie[lungime - 1] != '"'){
					linie[lungime] = '"';
					lungime++;
				}
				linie[lungime] = aux;
				lungime++;
			}
		}
		if(aux == '}'){
			contElem = 0;
			strcpy(auxiliar, linie);
			sep = "\"";
			cuv = strtok(auxiliar, sep);
			while(cuv != NULL){
				strcpy(elements[contElem], cuv);
				contElem++;
				cuv = strtok(0, sep);
			}
			if(semHead == 0){
				for(i = 1; i < contElem - 1; i = i + 4)
					fprintf(fout, "%s,", elements[i]);
				semHead = 1;
				fprintf(fout, "\n");
			}
			for(i = 3; i < contElem; i = i + 4)
				fprintf(fout, "%s,", elements[i]);
			fprintf(fout, "\n");
			lungime = 0;
			counting = 0;
//			printf("%s\n", linie);
			memset(linie, 0, strlen(linie));
		}
	}
	fclose(fin);
	fclose(fout);
	return 0;
}