Pagini recente » Cod sursa (job #1727390) | Cod sursa (job #939015) | Cod sursa (job #2950537) | Cod sursa (job #507252) | Cod sursa (job #1343097)
/*
============================================================================
Name : convertor2.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello World in C, Ansi-style
============================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 1024
int main(void) {
FILE *fin = fopen("convertor.in", "r");
FILE *fout = fopen("convertor.out", "w");
char *linie = (char*) malloc (MAX *sizeof(char));
char *auxiliar = (char*) malloc (MAX *sizeof(char));
int i, semHead = 0, contElem, lungime = 0, cap;
cap = MAX;
int counting = 0;
int nl = 128;
int nc = MAX;
char **elements = (char**)malloc(nl * sizeof(int*));
for(i = 0; i < nl; i++)
elements[i] = (int*) calloc(nc, sizeof(int));
char aux;
char *cuv;
char *sep = "\"";
fscanf(fin, "%c", &aux);
while(fscanf(fin, "%c", &aux) != EOF){
if(aux == '{'){
lungime = 0;
counting = 1;
}
if(aux != '\n' && counting == 1 ){
if(lungime == cap){
cap = cap *2;
linie = (char*)realloc(linie, cap * sizeof(char));
}
if(isspace(aux) || aux < 0){
if(linie[lungime - 1] != ':'){// && linie[lungime - 1] != ',' && linie[lungime - 1] != '"' ){
linie[lungime] = aux;
lungime++;
}
}
else{
if(aux != '"' && linie[lungime - 1] == ':'){
linie[lungime] = '"';
lungime++;
}
if(aux == ',' && linie[lungime - 1] != '"'){
linie[lungime] = '"';
lungime++;
}
if(aux == '}' && linie[lungime - 1] != '"'){
linie[lungime] = '"';
lungime++;
}
linie[lungime] = aux;
lungime++;
}
}
if(aux == '}'){
contElem = 0;
strcpy(auxiliar, linie);
sep = "\"";
cuv = strtok(auxiliar, sep);
while(cuv != NULL){
strcpy(elements[contElem], cuv);
contElem++;
if(contElem > nl){
nl = nl * 2;
elements = (char**)realloc(elements,nl * sizeof(int*));
}
cuv = strtok(0, sep);
}
if(semHead == 0){
for(i = 1; i < contElem - 1; i = i + 4)
fprintf(fout, "%s,", elements[i]);
semHead = 1;
fprintf(fout, "\n");
}
for(i = 3; i < contElem; i = i + 4)
fprintf(fout, "%s,", elements[i]);
fprintf(fout, "\n");
lungime = 0;
counting = 0;
// printf("%s\n", linie);
memset(linie, 0, strlen(linie));
}
}
fclose(fin);
fclose(fout);
return 0;
}