Cod sursa(job #1360602)

Utilizator MikkennCorneci Vlad Mihai Mikkenn Data 25 februarie 2015 16:45:29
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 2.73 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *headers(int *virgule)
{
	FILE *f;
	char *buffer;
	char *capete;
	int size = 50;
	capete = malloc(size);
	//  int virgule = 0;
	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 (strlen(capete) + 3 > size) {
				capete = realloc(capete, size * 2);
				size *= 2;
			}
			if (buffer[i] == ',')
				a++;
			if (buffer[i] == '}') {
				//printf("\nAICI%d",virgule);
				return capete;
			} else if (buffer[i] == ':')
				p++;
			if (a == p) {
				if (buffer[i] == '\"') {
					g++;
					if (g % 2 == 0) {
						capete[index] = ',';
						index++;
						(*virgule)++;
						//printf("%d", *virgule);
					}
				}
				if (g % 2 == 1 && buffer[i] != '\"') {
					capete[index] = buffer[i];
					index++;
				}
			}
		}
	}

	return capete;
}

void corp(int n)
{
	FILE *f;
	char *buffer;
	int i;
	int contor = 0;
	// int i, a = 0, p = 0;
	char *ptr;
	buffer = malloc(1024);
	f = fopen("convertor.in", "r");
	while ((fgets(buffer, 1024, f))!= NULL){
	//printf("%d", n);
	ptr = strchr(buffer, ':');
	for (i = 0; i < strlen(ptr); i++) {
			if (ptr[i] == '\"') {
				i++;
				while (ptr[i] != '\"') {
					printf("%c", ptr[i]);
					i++;
				}
				printf(",");
				contor ++;
				break;
			}
			if (ptr[i] >= 48 && ptr[i] <= 57) {
                    while (ptr[i] >= 48
                           && ptr[i] <= 57) {
                        printf("%c", ptr[i]);
                        i++;
                    }
                   i--;
                    printf(",");
                    contor++;
                    break;
 		
                }
		}
	ptr++;
	// printf("%s", ptr);
	while ((ptr = strchr(ptr, ':')) != NULL) {
		for (i = 0; i < strlen(ptr); i++) {
			if (ptr[i] == '\"') {
				i++;
				while (ptr[i] != '\"') {
					printf("%c", ptr[i]);
					i++;
				}
				printf(",");
				contor++;
				break;
			}
			if (ptr[i] >= 48 && ptr[i] <= 57) {
                    while (ptr[i] >= 48
                           && ptr[i] <= 57) {
                        printf("%c", ptr[i]);
                        i++;
                    }
                   i--;
                    printf(",");
                    contor++;
                    break;
 
                }
                if ( contor == n){
			contor = 0;
			printf("\n");
		}

		}
		


		ptr++;
	}
	}
	printf("\n");


}

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

	capete = headers(&cuvinte);
	//printf("\nAici%d", cuvinte);
	printf("%s\n", capete);
	corp(cuvinte);
	//fputs(capete, stdout);
	return 0;
}