Cod sursa(job #1360420)

Utilizator deeagrtAndGrt deeagrt Data 25 februarie 2015 14:40:29
Problema Convertor Scor 70
Compilator c Status done
Runda rosedu_cdl_2015 Marime 1.84 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int main()
{
	char *rand = calloc(1024,sizeof(char));
	char **cuvinte = calloc(10128,sizeof(char*));
	char **head =calloc(10128,sizeof(char*));
	int i,j,k;
	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;
								else
									{k++;
									head[k] = malloc(1024 * sizeof(char));
									strcpy(head[k], p);//k++;
									}
							}
						else if (i%2==1)
							{	j++; 
								cuvinte[j] = malloc(1024 * sizeof(char));
								strcpy(cuvinte[j], p);
								//j++;
							}
						i++;
					}
				p = strtok(NULL,"[{}]\"\n\t");
			}
		}
	free(p);	free(rand);
	for (i =1 ;i<=k;i++)
		fprintf(g,"%s,",head[i]);
	fprintf(g,"\n");
	for (i =1 ;i<=j;i++)
		if (i%k==0)
			fprintf(g,"%s,\n",cuvinte[i]);
		else	fprintf(g,"%s,",cuvinte[i]);
	/*k = 1;
	fprintf(g, "%s,", cuvinte[0]);
	for ( j = 2; j < i; j += 2)
		if (strcmp(cuvinte[j], cuvinte[0]) != 0) 
			{
				fprintf(g,"%s,",cuvinte[j]);
				k++;
			}
			else {
				fprintf(g, "\n");
				break;
				}
	int q = 1;
	for (j = 1; j < i; j = j + 2)
		{ 
			fprintf(g, "%s,",cuvinte[j]);
			q++;
			if (((q - 1) % k == 0)&&(j<i-1))
				{
					q = 1;
					fprintf(g, "\n");
				}
		}*/
	fclose(f);
	fclose(g);
	for (i = 1;i <= j;i++)
		{printf("'%s'\n",cuvinte[i]);free(cuvinte[i]);}
	free(cuvinte);
	return 0;

}