Cod sursa(job #1360465)

Utilizator MikkennCorneci Vlad Mihai Mikkenn Data 25 februarie 2015 15:09:33
Problema Convertor Scor 50
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.64 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void headers(char *capete)
{
	FILE *f;
	char *buffer;
	int i, a = 0, p = 0, g = 0, index = 0;
	buffer = malloc(1024);

	f = fopen("convertor.in", "r");

	//buffer = strstr(buffer, "{");
	//fputs (buffer,stdout);
	while (1) {
		fgets(buffer, 1024, f);
		for (i = 0; i < strlen(buffer); i++) {
			if (buffer[i] == ',')
				a++;
			if (buffer[i] == '}')
				return;
			else if (buffer[i] == ':')
				p++;
			if (a == p) {
				if (buffer[i] == '\"') {
					g++;
					if (g % 2 == 0) {
						capete[index] = ',';
						index++;
					}
				}
				if (g % 2 == 1 && buffer[i] != '\"') {
					capete[index] = buffer[i];
					index++;
				}
			}
		}
	}
}

void corp()
{
	FILE *f;
	char *buffer;
	int i, a = 0, p = 0;
	buffer = malloc(1024);
	f = fopen("convertor.in", "r");

	while ((fgets(buffer, 1024, f)) != NULL) {
		a = 0, p = 0;
		for (i = 0; i < strlen(buffer); i++) {
			if (buffer[i] == ',')
				a++;
			else if (buffer[i] == ':')
				p++;

			if (buffer[i] == '}'){
				
				printf("\n");
			}
			if (buffer[i] == '{'){
				a = 0 ;
				p = 0;
			}

			if (a < p) {
				/* stringuri */
				if (buffer[i] == '\"') {
					i++;
					while (buffer[i] != '\"') {
						printf("%c", buffer[i]);
						i++;
					}
					printf(",");
				}

				if (buffer[i] >= 48 && buffer[i] <= 57) {
					while (buffer[i] >= 48
					       && buffer[i] <= 57) {
						printf("%c", buffer[i]);
						i++;
					}
					i--;
					printf(",");

				}
			}
		}
	}

}

int main()
{
	char *capete;
	freopen("convertor.out", "w", stdout);
	capete = malloc(1024);

	headers(capete);
	printf("%s\n", capete);
	corp();
	//fputs(capete, stdout);
	return 0;
}