Cod sursa(job #1360445)

Utilizator deeagrtAndGrt deeagrt Data 25 februarie 2015 14:58:28
Problema Convertor Scor 80
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.67 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
	char *rand = calloc(1024,sizeof(char));
	char **head =calloc(10128,sizeof(char*));
	char **cuvinte =calloc(10128,sizeof(char*));
	int i,j,k,q;
	FILE *f = fopen("convertor.in","r");
	i=0;
	FILE *g = fopen("convertor.out","w");
	char *p=calloc(1024,sizeof(char));int ok= 1;k=0;j=0;
	while (!feof(f))	
		{
			fgets(rand,1024,f);
			p = strtok(rand, "[{}]\"\n\t");
			while (p != NULL)
			{	
				p[strlen(p)]='\0';	
				while ((p[0]==' ')||(p[0]==':'))
						{
							memcpy(p,p+1,strlen(p)-1);
							p[strlen(p)-1]='\0';
						}
					 while ((p[strlen(p)-1]==' ')||(p[strlen(p)-1]==','))
							{
							p[strlen(p)-1]='\0';
							}					
				if (strlen(p)>0)
					{
						if ((i%2==0) && ok) 
							{
								if ((k>0)&&(strcmp(p,head[1])==0)) 
									{
										ok=0;
										for (q=1 ;q<=k;q++)
											fprintf(g,"%s,",head[q]);
										fprintf(g,"\n");
									}
								else
									{
										k++;
										head[k] = malloc(1024 * sizeof(char));
										strcpy(head[k], p);//k++;
									}
							}
						else if (i%2==1)
							{	
								if (ok)
								{
									j++;
									cuvinte[j] = malloc(1024 * sizeof(char));
									strcpy(cuvinte[j], p);
								}
								else 
									if (j==k)
										{for (q=1 ;q<=k;q++)
											fprintf(g,"%s,",cuvinte[q]);
										fprintf(g,"\n");
										j=1;
										strcpy(cuvinte[j], p);}
									else 
										{j++;
										strcpy(cuvinte[j], p);}
							}
						i++;
					}
				p = strtok(NULL,"[{}]\"\n\t");
			}
		}
	for (q=1 ;q<=k;q++)
			fprintf(g,"%s,",cuvinte[q]);
	fprintf(g,"\n");
	free(p);	free(rand);
	
	fclose(f);
	fclose(g);
	return 0;

}