Cod sursa(job #1358819)

Utilizator RobertSSamoilescu Robert RobertS Data 24 februarie 2015 20:07:07
Problema Convertor Scor 60
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.34 kb
#include <stdio.h>
#include <stdlib.h>


int isDigit(char c){
	if ('0' <= c && c <= '9')
		return 1;
	return 0;
}

void print_values(FILE *fin, FILE *fout){
	rewind(fin); // aducem cusorul de la capat
	char c;
	while(fscanf(fin, "%c", &c) != EOF){
		
		if(c == ':'){
			fscanf(fin, "%c", &c);
			while( c == ' ')
				fscanf(fin, "%c", &c);
			
			if(isDigit(c)){
				while( isDigit(c)){
					fprintf(fout, "%c",  c);
					fscanf(fin, "%c", &c);
				}
				fprintf(fout, "%c", ',');
			}
			if( c == '\"'){
				fread(&c, 1, sizeof(char), fin);
				while(c != '\"'){
					fprintf(fout, "%c", c);
					fscanf(fin, "%c", &c);
				}
				fprintf(fout, "%c", ',');
			}
	
		}
		if( c == '}') fprintf(fout, "%c", '\n');
	
	} 


}


/*FUNCTIE PENTRU CITIRE SI DETERMINAREA COLOANELOR*/
void read(FILE *fin, FILE *fout){
	char c;
	fscanf(fin, "%c", &c);
	while (c != '{')
		fscanf(fin, "%c", &c);
	
	while (c != '}'){
		fscanf(fin, "%c", &c);
		if(c == '\"'){
			fread(&c, 1, sizeof(char), fin);
			while(c != '\"'){
				fprintf(fout,"%c",c);
				fscanf(fin, "%c", &c);
			}
			fprintf(fout,"%c",',');
			while(c != ',' && c!='}')
				fscanf(fin, "%c", &c);
		}


	}
	fprintf(fout, "%c", '\n');
	
}

int main(){

	FILE *fin = fopen("convertor.in", "rt");
	FILE *fout = fopen("convertor.out", "wt");
	
	read(fin, fout);
	print_values(fin, fout);

	fclose(fin);
	fclose(fout);
return 0;
}