Cod sursa(job #1340125)

Utilizator razvan3895Razvan-Mihai Chitu razvan3895 Data 11 februarie 2015 15:52:10
Problema Convertor Scor 40
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.9 kb
#include <stdio.h>
#include <string.h>

int main() {
	FILE *f = fopen("convertor.in", "r"), *g = fopen("convertor.out", "w");
	char line[1024], *c, a[100], b[100], *p, v[100];
	int i, ok = 0, nr = 0, k;
	memset(v, 0, 100);
	memset(a, 0, 100);
	memset(b, 0, 100);
	while(fgets(line, 1024, f)) {
		c = strchr(line, '"');
		while(c) {
			//printf("%s", c);
			p = strchr(c + 1, '"');
			if(!nr) {
				strncpy(a, c + 1, p - c - 1);
				nr ++;
				fprintf(g, "%s,", a);
			}
			else {
				strncpy(b, c + 1, p - c - 1);
				if(nr && strcmp(a, b) == 0) {
					ok = -1;
					break;
				}
				fprintf(g, "%s,", b);
				memset(b, 0, 100);
				nr++;
			}
			p = strchr(p, ':');			
			c = p + 1;
			for(i = 1; c[i] < 33; i++);
			if(c[i] == '"') {
				v[nr - 1] = 1;
				c = strchr(c + i + 1, '"') + 1;
			}
			c = strchr(c, '"');
			
				
			
		}
		if(ok == -1) {
			break;
		}
	}
	//for(i = 0; i < nr; i++)
	//	printf("%d ", v[i]);
	//printf("\n");
	fprintf(g, "\n");
	fseek(f, 0, 0);
	//printf("%d\n", nr);
	k = 0;
	while(fgets(line, 1024, f)) {
		//fprintf(g, "%s", line);
		if((c = strchr(line, '"')) == NULL)
			continue;
		
		if((c = strchr(c + 1, '"')) == NULL)
			continue;

		if((c = strchr(c + 1, ':')) == NULL)
			continue;
		
		while(c) {
			//puts(c);			
			i = 1;
			while(c[i] < 33) {
					i++;
				
			}
			if(c[i] == '"') {
				v[k] = 1;
				i++;
			}
			
			while(c[i] != 10 && c[i] != '"' && c[i] != ',') {
				fprintf(g, "%c", c[i]);
				
				i++;
			}
			
			
			fprintf(g, ",");
			if(v[k]) {
				if(c == NULL)
					break;
				c = strchr(c, '"');
				//printf("Hello %s", c);
				if(c == NULL)
					break;
				c = strchr(c + 1, '"') + 1;
			}
			k ++;
			if(k == nr) {
				fprintf(g, "\n");
				k = 0;
			}
			if(c == NULL)
					break;
			c = strchr(c, '"');
			if(c == NULL)
					break;
			c = strchr(c + 1, '"');
			
			if(c == NULL)
					break;
			c = strchr(c + 1, ':');
			
			
		}
			
	}
	fclose(f);
	fclose(g);				
	return 0;
}