Pagini recente » Cod sursa (job #62643) | Cod sursa (job #38316) | Cod sursa (job #1730797) | eusebiu_oji_2017_cls11-12 | Cod sursa (job #1350657)
#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;
bool isValue;
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){
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){
//bool inString;
eliminateSpaces(param);
char* token = strtok(param,"[{\"\n:,");
//inString = false;
while(token != NULL){
if(isValue){
if(token[0] == '{'){
fputs("\n",fout);
printf("\n");
token = strtok(NULL,"\"\n:,");
isValue = false;
continue;
}
fputs(token,fout);
fputs(",",fout);
printf("%s,", token);
}
isValue = !isValue;
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
isValue = false;
while(!feof(fin)){
fgets(buffer,DIM_BUFFER,fin);
if(feof(fin)) break;
printf("<<<%s>>>\n\n",buffer);
printValues(buffer);
}
fclose(fin);
fclose(fout);
return 0;
}