Pagini recente » Cod sursa (job #2100847) | Cod sursa (job #3130797) | Cod sursa (job #431695) | Cod sursa (job #1388387) | Cod sursa (job #1342485)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 2048
int writeCsvHeader(FILE * fin, FILE * fout) {
int fieldsCount = 0;
char buffer[N];
char delimiters[] = ": \"";
char * p;
rewind(fin);
fgets(buffer, N, fin);
while (fgets(buffer, N, fin) != NULL) {
if (buffer[0] == '}') break;
p = strtok(buffer, delimiters);
fprintf(fout, p);
fprintf(fout, ",");
++fieldsCount;
}
fprintf(fout, "\n");
return fieldsCount;
}
void writeCsvContent(FILE * fin, FILE * fout, int fields) {
char buffer[N];
char delimiters[] = ",: \"";
char * p;
int length = 0;
rewind(fin);
fgets(buffer, N, fin);
while (fgets(buffer, N, fin) != NULL) {
if (buffer[0] == '}') {
fprintf(fout, "\n");
continue;
}
p = strstr(buffer, ":");
p += 2;
if (*p == '"') ++p;
length = strlen(p);
--length;
if (*(p + length - 1) == ',') --length;
if (*(p + length - 1) == '"') --length;
*(p + length) = '\0';
fprintf(fout, "%s,", p);
}
}
int main()
{
FILE * fin, * fout;
int fieldsCount = 0;
if(!(fin = fopen("convertor.in", "rt"))) {
fprintf(stderr, "Could not open input file!\n");
exit(EXIT_FAILURE);
}
if(!(fout = fopen("convertor.out", "wt"))) {
fprintf(stderr, "Could not open output file!\n");
exit(EXIT_FAILURE);
}
fieldsCount = writeCsvHeader(fin, fout);
if (fieldsCount > 0) {
writeCsvContent(fin, fout, fieldsCount);
}
fclose(fin);
fclose(fout);
return 0;
}