Pagini recente » Cod sursa (job #1027521) | Cod sursa (job #2883311) | Cod sursa (job #2398452) | Cod sursa (job #1796580) | Cod sursa (job #1354307)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
FILE *g;
void afisare_cuvinte( char sir[] , int c ) //c=0 daca afisam cheile
//c=1 daca afisam valorile
{
char sep[8] = {',',':','"','[','{',']','\n'} , cuvant[100],
alfabet[120] = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
"1234567890`~!@#$%^&*_-+=|';?/>;<";
char *p;
int nr=c;
p=strtok( sir, sep ); //extrage primul cuvant(secventa dintre separatori)
while( p ) //cat timp mai sunt cuvinte
{
strcpy( cuvant, p );
while( cuvant[0] == ' ') //stergem spatiile din cuvant
strcpy( cuvant, cuvant+1 );
if((strlen( cuvant ) != 0) && strchr( alfabet, cuvant[0] )) //daca este cheie sau valoare
{
if(nr % 2 == 0) //pozitiile cheilor cand c=0 si a valorilor cand c=1
{
//afisare
if(strchr( cuvant , '}' ) == 0 )
fprintf( g ,"%s," , cuvant );
else //daca avem cazul --> : 100}
{
strcpy( cuvant + strlen( cuvant ) - 1, cuvant + strlen( cuvant ));
fprintf( g ,"%s,\n" , cuvant );
}
}
nr++;
}
//daca intalnim '}', -ne oprim, cand afisam cheile
// -trecem pe urmatoarea linie,cand afisam valorile
if(strchr( cuvant , '}' ) != 0 )
{
if(c == 0)
break;
else
fprintf( g, "\n");
}
p=strtok( NULL, sep ); //extragem urmatorul cuvant
}
}
int main ()
{
FILE *f;
char *sir1, *sir2;
long lungime_f;
f= fopen( "convertor.in" , "rb" );
g= fopen( "convertor.out" , "w" );
//calculam lungimea fisierului
fseek (f , 0 , SEEK_END);
lungime_f = ftell(f);
rewind(f);
//citim intregul fisier in sir1 (sir1- pentru prelucrarea cheilor)
sir1= (char*) calloc( 1 , lungime_f );
fread ( sir1, lungime_f, 1, f );
fclose(f);
//copiem sir1 in sir2 (sir2- pentru prelucrarea valorilor)
sir2= (char*) calloc( 1 , lungime_f );
strcpy( sir2 , sir1 );
afisare_cuvinte( sir1 , 0 );
fprintf( g, "\n" );
afisare_cuvinte( sir2 , 1 );
fclose(g);
return 0;
}