Cod sursa(job #1345600)

Utilizator remus.ionitaIonita Remus remus.ionita Data 17 februarie 2015 19:10:20
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 3.29 kb
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *next(char *from,char *word) {
	char sep[] = "{[]:,\n";
        word = strtok(from,sep);
        return word;
}
int main(void) {

        FILE *f = fopen("convertor.in","r");
	FILE *f2 = fopen("convertor.out","w");

        char line[10130],*cuv;
	int i = 0;
	int j = 0, nr_cuv = 1;
	int first = 0;
	char rms[10000];
	while( fgets(line,10000,f) != NULL) {
		cuv = next(line,cuv);
                while(cuv!=NULL) {
			if(strcmp(cuv," ")) {
			
				char *aux =(char *) strdup(cuv);
				char *t = (char *) strstr(aux,"\"");
				if (t) {
						i = 1;	
						if(nr_cuv % 2 == 0 && first == 0) {
                                                	while(t[i] != '\"') {
                                                		fputc(t[i],f2);
                                                		i++;
                                                        }
                                                        fputs(",",f2);
                                                }
	
						if(nr_cuv % 2 == 1 && first == 0) {
							while(t[i] != '\"') {
								rms[j] = t[i];
								j++;
								i++;
							}
							rms[j] = ',';
							j++;
						}
	
						if(nr_cuv % 2 == 1 && first == 1) {
                                                        while(t[i] != '\"') {
                                                                fputc(t[i],f2);
                                                                i++;
                                                        }
                                                        fputs(",",f2);
                                                }

						for(;i<strlen(t);i++) {
							if(t[i] == '}') {
								fputs("\n",f2);
								nr_cuv=0;
								if(first == 0) {
									fputs(rms,f2);
									fputs("\n",f2);
								}
								first = 1;
							}
						}
					}
				else   {
						i = 0;	
						if(nr_cuv % 2 == 1 && first == 0) {
                                                        while(i < strlen(aux)) {
                                                                        if( aux[i] == '}') {
                                                                                fputs("\n",f2);
                                                                                nr_cuv = 0;
                                                                                first = 1;
                                                                        }
                                                                        if( (aux[i] - '0') >= 0 && (aux[i] - '0') <=9 ) {
                                                                           	rms[j] = aux[i];
										j++;
									}
                                                                i++;
                                                        }
                                                        rms[j] = ',';
							j++;
                                                }

						if(nr_cuv %2 == 1 && first == 1) {
							while(i < strlen(aux)) {
									if( aux[i] == '}') {
										fputs("\n",f2);
										nr_cuv = 0;
										first = 1;
									}					
									if( (aux[i] - '0') >= 0 && (aux[i] - '0') <=9 ) 
										fputc(aux[i],f2);
								i++;
							}
							fputs(",",f2);
						}
				}	
			}
			cuv=next(NULL,cuv);
			nr_cuv++;
		}
	}
	fclose(f2);
	return 0;
}