Pagini recente » Cod sursa (job #65680) | Cod sursa (job #2573685) | Cod sursa (job #2154625) | Cod sursa (job #2987154) | Cod sursa (job #1342921)
#include<stdio.h>
int stare = 1, i=-1, j=-1;
FILE *f, *g;
struct val{
char valoare[1024];
}v[10000];
void automat_save(char c)
{
switch(stare){
case 1:
if (c == '"') stare = 2;
break;
case 2:
if (c == '"') {stare = 3; i++; j=-1; fprintf(g, ",");}
else
fprintf(g, "%c", c);
break;
case 3:
if (c == '"') stare = 4;
else
if( c>='0' && c<='9')
{v[i].valoare[++j] = c; stare = 7;}
break;
case 4:
if (c == '"') {v[i].valoare[++j] = '\0'; stare = 5;}
else v[i].valoare[++j] = c;
break;
case 5:
if (c == ',') stare = 1;
else if ( c == '}') stare = 6;
break;
case 6:
if (c == ']') stare = 9;
else if ( c == '{') stare = 8;
break;
case 7:
if (c == ',') { v[i].valoare[++j] = '\0'; stare = 1; }
else if ( c == '}') { v[i].valoare[++j] = '\0'; stare = 6; }
else if(c >='0' && c<='9') v[i].valoare[++j] = c;
break;
}
}
void automat_afis(char c)
{
switch(stare){
case 1:
if (c == '"') stare = 2;
break;
case 2:
if (c == '"') stare = 3;
break;
case 3:
if (c == '"') stare = 4;
else
if(c >='0' && c<='9')
{fprintf(g, "%c", c); stare = 7;}
break;
case 4:
if (c == '"') { fprintf(g, ","); stare = 5;}
else fprintf(g, "%c", c);
break;
case 5:
if (c == ',') stare = 1;
else if ( c == '}') stare = 6;
break;
case 6:
if (c == ']') stare = 9;
else if ( c == '{') { fprintf(g, "\n"); stare = 1; }
break;
case 7:
if (c == ',') { fprintf(g, ","); stare = 1;}
else if ( c == '}') { fprintf(g, ","); stare = 6;}
else if(c >='0' && c<='9') fprintf(g, "%c", c);
break;
}
}
int main(){
char c;
int k;
f = fopen("convertor.in", "rt");
g = fopen("convertor.out", "wt");
while( stare < 8 && fscanf(f, "%c", &c) == 1 )
automat_save(c);
fprintf(g, "\n");
for(k=0; k<=i; k++){
fprintf(g, "%s", v[k].valoare);
fprintf(g, ",");
}
fprintf(g, "\n");
if(stare == 8){
stare = 1;
while( fscanf(f, "%c", &c) == 1 && stare!=9 )
automat_afis(c);
}
fclose(g);
fclose(f);
return 0;
}