Pagini recente » Cod sursa (job #2923706) | Cod sursa (job #2301444) | Cod sursa (job #423347) | Cod sursa (job #3175677) | Cod sursa (job #1354781)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void reset_count (char x, int *count, FILE *f, char *line, int *pos) {
if ( x == '}' ) {
line[*pos] = '\n';
fputs(line,f);
//strcpy(line,"");
*pos = 0;
*count = 0;
}
}
void prelucrare(char *namein, char *nameout) {
FILE *f1 = fopen(namein, "r");
FILE *f2 = fopen(nameout, "a");
int count = 0;
int virg = 0;
char c1, c2;
char line[300000];
int pos = 0;
while ( (c1 = fgetc(f1)) != '}' ) {
if (c1 == '"') {
virg = 1;
count ++;
while ( (c2 = fgetc(f1)) != '}') {
if (c2 == '"')
break;
if (count % 2 == 1 )
line[pos++] = c2;
}
}
if ( (c1 - '0') >= 0 && (c1 - '0') <= 9 ) {
virg = 1;
count ++;
while ( (c2 = fgetc(f1)) != EOF) {
if ( (c2 - '0') < 0 || (c2 - '0') > 9 )
break;
}
}
if (virg && count % 2 == 1) {
line[pos++] = ',';
virg = 0;
}
}
reset_count('}',&count,f2,line,&pos);
virg = 0;
fseek(f1,0,0);
while ( (c1 = fgetc(f1)) != EOF ) {
reset_count(c1,&count,f2,line,&pos);
if (c1 == '"' ) {
virg = 1;
count ++;
while ( (c2 = fgetc(f1)) != EOF) {
if (c2 == '"')
break;
if (count % 2 == 0 )
line[pos++] = c2;
reset_count(c2,&count,f2,line,&pos);
}
}
if ( (c1 - '0') >= 0 && (c1 - '0') <= 9 ) {
virg = 1;
count ++;
if (count % 2 == 0 )
line[pos++] = c1;
while ( (c2 = fgetc(f1)) != EOF) {
if ( (c2 - '0') < 0 || (c2 - '0') > 9 )
break;
if (count % 2 == 0 )
line[pos++] = c2;
reset_count(c2,&count,f2,line,&pos);
}
}
if (virg && count % 2 == 0) {
line[pos++] = ',';
virg = 0;
}
}
fclose(f2);
}
int main(void)
{
char namein[] = "convertor.in";
char nameout[] = "convertor.out";
prelucrare(namein,nameout);
return 0;
}