Pagini recente » Cod sursa (job #2093319) | Cod sursa (job #159013) | Cod sursa (job #58926) | Cod sursa (job #2245375) | Cod sursa (job #1349136)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* seek_char(char* p, const char ch)
{
do{
p++;
}while(*p != ch && *p != '\0');
return p;
}
char* seek_nonwsp(char*p) {
while(*p == ' ' || *p == '\n') {
p++;
}
return p;
}
int main()
{
FILE* f = fopen("convertor.in","rt");
FILE* g = fopen("convertor.out","wt");
//find file size
fseek(f, 0, SEEK_END);
long int size = ftell(f);
rewind(f);
//read JSON
char* string = malloc(sizeof(char) * size + 1);
fread(string, sizeof(char), size, f);
char* beg = string;
//parse
char* obj_end = seek_char(string, '}');
while(string < obj_end) {
string = seek_char(string, '\"');
string++;
while(*string != '\"') {
fprintf(g, "%c", *string);
string++;
}
fprintf(g, ",");
string = seek_char(string, ',');
}
string = beg;
while(string < beg + size) {
string = seek_char(string, '{');
if(*string == '\0') break;
obj_end = seek_char(string, '}');
fprintf(g, "\n");
while(string < obj_end) {
string = seek_char(string, ':');
string++;
string = seek_nonwsp(string);
printf("%c ", *string);
if(*string == '\"') {
string++;
while(*string != '\"') {
// printf("%c\n", *string);
fprintf(g, "%c", *string);
string++;
}
} else {
while(strchr("0123456789", *string)) {
fprintf(g, "%c", *string);
string++;
}
}
// printf("1\n");
fprintf(g, ",");
string = seek_char(string - 1, ',');
}
printf("\n");
string = obj_end;
}
}