Cod sursa(job #1345573)

Utilizator remus.ionitaIonita Remus remus.ionita Data 17 februarie 2015 18:53:21
Problema Convertor Scor 0
Compilator c Status done
Runda rosedu_cdl_2015 Marime 3.27 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");
	freopen("convertor.out","w",stdout);

        char line[10130],*cuv,*fin;
	int i = 0;
	int j = 0, nr_cuv = 1;
	int first = 0;
	char rms[10000];
	while( fgets(line,10000,f) != NULL) {
		cuv = strdup(next(line,cuv));
                while(cuv!=NULL) {
			if(strcmp(cuv," ")) {
			
				char *aux = strdup(cuv);
				char *t = strstr(aux,"\"");
				if (t) {
						i = 1;	
						if(nr_cuv % 2 == 0 && first == 0) {
                                                	while(t[i] != '\"') {
                                                		printf("%c",t[i]);
                                                		i++;
                                                        }
                                                        printf(",");
                                                }
	
						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] != '\"') {
                                                                printf("%c",t[i]);
                                                                i++;
                                                        }
                                                        printf(",");
                                                }

						for(;i<strlen(t);i++) {
							if(t[i] == '}') {
								printf("\n");
								nr_cuv=0;
								if(first == 0) {
									printf("%s",rms);
									printf("\n");
								}
								first = 1;
							}
						}
					}
				else   {
						i = 0;	
						if(nr_cuv % 2 == 1 && first == 0) {
                                                        while(i < strlen(aux)) {
                                                                        if( aux[i] == '}') {
                                                                                printf("\n");
                                                                                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] == '}') {
										printf("\n");
										nr_cuv = 0;
										first = 1;
									}					
									if( (aux[i] - '0') >= 0 && (aux[i] - '0') <=9 ) 
										printf("%c",aux[i]);
								i++;
							}
							printf(",");
						}
				}	
			}
			cuv=next(NULL,cuv);
			nr_cuv++;
		}
	}
	return 0;
}