Cod sursa(job #1340025)

Utilizator razvan3895Razvan-Mihai Chitu razvan3895 Data 11 februarie 2015 14:11:38
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.32 kb
#include <stdio.h>
#include <string.h>

int main() {
	FILE *f = fopen("convertor.in", "r"), *g = fopen("convertor.out", "w");
	char line[1024], *c, fields[2][100], *p;
	int i, ok = 0, nr = 0, k;
	memset(fields[0], 0, 100);
	memset(fields[1], 0, 100);
	while(fgets(line, 1024, f)) {
		c = strchr(line, ':');
		while(c) {
			i = 0;
			while(c - i >= line && *(c - i) != '"')
				i ++;
			p = c - i - 1;
			i = 0;
			while(p - i >= line && *(p - i) != '"')
				i ++;
			p = p - i + 1;
			if(!nr) {
				strncpy(fields[0], p, i);
				fprintf(g, "%s,", fields[0]);
			}
			else {
				strncpy(fields[1], p, i);
				if(nr && strcmp(fields[1], fields[0]) == 0) {
					ok = -1;
					break;
				}
				fprintf(g, "%s,", fields[1]);
				memset(fields[1], 0, 100);
			}
			nr++;
			c = strchr(c + 1, ':');
		}
		if(ok == -1) {
			break;
		}
	}
	fprintf(g, "\n");
	fseek(f, 0, 0);
	k = 0;
	while(fgets(line, 1024, f)) {
		//fprintf(g, "%s", line);
		c = strchr(line, ':');
		while(c) {
			
			k++;
			i = 1;
			while(c[i] != '"' && c[i] < '0')
				i++;
			if(c[i] == '"')
				i++;
			//puts(c+i);
			while(c[i] != 10 && c[i] != '"' && c[i] != ',') {
				fprintf(g, "%c", c[i]);
				
				i++;
			}
			//puts(c+i);
			
			fprintf(g, ",");
			c = strchr(c + i, ':');
			if(k == nr) {
				fprintf(g, "\n");
				k = 0;
			}
		}
			
	}
	fclose(f);
	fclose(g);				
	return 0;
}