Pagini recente » Cod sursa (job #1417076) | Cod sursa (job #2903040) | Cod sursa (job #2220143) | Cod sursa (job #658051) | Cod sursa (job #1350592)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#define FIN "convertor.in"
#define FOUT "convertor.out"
#define DIM_BUFFER 1024
FILE *fin, *fout;
void eliminateSpaces(char* param){
int length = strlen(param);
bool inString = false;
for(int i=length-1; i >= 0; i--){
if(param[i] == '\"'){
inString = !inString;
}
if(param[i] == ' '){
if(inString){
continue;
}
memcpy(param+i,param+i+1,length-i);
}
}
}
void printKeys(char* param){
int length = strlen(param);
bool inString;
eliminateSpaces(param);
char* token = strtok(param,"[{\"\n:,");
inString = true;
while(token != NULL){
if(inString){
fputs(token,fout);
fputs(",",fout);
printf("%s,", token);
}
inString = !inString;
token = strtok(NULL,"\"\n:,");
}
}
void printValues(char* param){
int length = strlen(param);
bool inString;
eliminateSpaces(param);
char* token = strtok(param,"[{\"\n:,");
inString = false;
while(token != NULL){
if(inString){
if(token[0] == '{'){
fputs("\n",fout);
printf("\n");
token = strtok(NULL,"\"\n:,");
inString = false;
continue;
}
fputs(token,fout);
fputs(",",fout);
printf("%s,", token);
}
inString = !inString;
token = strtok(NULL,"\"\n:,");
}
}
int main(){
fin = fopen(FIN , "rt");
fout = fopen(FOUT, "wt");
char buffer[DIM_BUFFER];
char *res;
//PARSE KEYS
while(!feof(fin)){
fgets(buffer,DIM_BUFFER,fin);
res = strchr(buffer,'}');
if(res != NULL){
res[0] = '\0';
printKeys(buffer);
break;
}
printKeys(buffer);
}
fputs("\n",fout);
printf("\n");
fseek(fin, SEEK_SET, 0);
//PARSE VALUES
while(!feof(fin)){
fgets(buffer,DIM_BUFFER,fin);
printValues(buffer);
}
fclose(fin);
fclose(fout);
return 0;
}