Создание CSV с манипулированными данными из другого CSV - PullRequest
0 голосов
/ 03 сентября 2018

Итак, у меня есть данные из CSV, которые я добавил в массив Struct (ниже). Теперь я хочу вывести минимальное и максимальное значения в другом CSV-файле.

typedef struct {
    double xvalue;
    double yvalue;
    double uvalue;
    double vvalue;
} flow_data;

Я распечатал эти значения, и все это работает, но вместо этого я хочу вывести их в файл CSV, в точности так, как они выводятся здесь. Как бы я поступил так? Подскажите, нужна дополнительная информация о программе.

flow_data* z = &dataset[ivalueofmaxu];
printf("%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminu];
printf("%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofmaxv];
printf("%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminv];
printf("%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

Ответы [ 3 ]

0 голосов
/ 03 сентября 2018

Вы можете использовать fprintf для печати в файл. Синтаксис

int fprintf(FILE *stream, const char *format, ...)

Где *stream - файловый поток. Используйте fopen, чтобы получить поток файлов, как показано ниже.

FILE * fp;

fp = fopen ("someother.csv", "w+");

flow_data* z = &dataset[ivalueofmaxu];
fprintf(fp , "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminu];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofmaxv];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminv];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);
0 голосов
/ 03 сентября 2018

Вам просто нужно записать вывод в новый файл CSV, нет ничего особенного в записи данных в файлы CSV, вам просто нужно сохранить синтаксис (допустимый разделитель - запятая, а не точка с запятой; ) и у тебя все должно быть в порядке. Я бы посоветовал вам использовать fprintf для этого, готовый пример. http://www.cplusplus.com/reference/cstdio/fprintf

0 голосов
/ 03 сентября 2018

Используйте fprintf вместо printf (<stdio.h> header).

Но сначала нужно открыть нужный файл в режиме записи:

FILE * fp = fopen("testfile.csv", "w");

Затем, используя указатель на ранее открытый файл, вы легко можете записать в него свои значения:

flow_data* z = &dataset[ivalueofmaxu];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminu];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofmaxv];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);

z = &dataset[ivalueofminv];
fprintf(fp, "%.7f, %.7f, %.7f, %.7f\n", z->xvalue, z->yvalue, z->uvalue, z->vvalue);
fclose(fp); // remember to close it after you are done

Как видите, основным отличием является дополнительный аргумент с указателем на FILE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...