Cod sursa(job #1360380)

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


int main()
{
	char *rand = calloc(1024,sizeof(char));
	char **cuvinte = calloc(1024,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;;
	while (!feof(f))	
		{
			fgets(rand,1024,f);
			p = strtok(rand, "[{}]\"\n\t");
			while (p != NULL)
			{	
				cuvinte[i] = malloc(1024 * sizeof(char));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)
					{
					
					strcpy(cuvinte[i], p);
					
					i++;
				}
				p = strtok(NULL,"[{}]\"\n\t");
			}
		}
	free(p);	free(rand);
	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 (j = 0;j < i;j++)
		{printf("'%s'\n",cuvinte[j]);free(cuvinte[j]);}
	free(cuvinte);
	return 0;

}