Чтение элементов из CSV-файлов, сравнение и замена их в C - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть 2 файла CSV. Первая имеет следующий формат:

ID,Part1,Part2,Part3
0,25,7,11
1,3,19,10
2,28,21,0
...
20,14,8,15

Первая строка - это заголовки для каждого столбца. Столбец ID изменяется от 0 до 20 в порядке возрастания, а столбцы «Часть» варьируются от 0 до 30.
Следующий файл является файлом «преобразования» и содержит соответствующее значение для каждого числа.

30,45,44,45
29,44,44,43
28,43,43,42
...
1,12,13,14
0,13,13,12

Этот файл имеет 30 строк и имеет правило соответствия для каждого столбца. Если у вас есть 30 в столбце Part1, он будет заменен на 45, а если вы найдете 28 в столбце Part3, он будет заменен на 42 и т. Д.
До сих пор у меня не было проблем с создание файлов и запись на них, но я не знаю, как сравнивать и заменять числа.

#include <stdio.h> 
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main (int argc,char *argv[]){
    int i,conv;
    char values[20][20];
    char replacements[20][20];

    //Generating the files
    FILE *registry= fopen("registry.csv","w+");
    if (registry == NULL){ fputs ("File error",stderr); exit (1);}

    FILE *conversion= fopen("conversion.csv","r");
    if (conversion == NULL){ fputs ("File error",stderr); exit (1);}

    //Writing the header
    fprintf(registry,"ID,Part1,Part2,Part3\n");
    srand(time(0));

    //Generating the random values
    for(i=1;i<21;i++){
        sprintf(values[i],"%d,%d,%d,%d\n",i,rand()%31,rand()%31,
            rand()%31);
        fputs(values[i], registry);
    }

    //Compare and replace
    for(i=1;i<21;i++){
        sprintf(replacements[i],"%d,%d,%d,%d\n",i,
            fscanf(registry, "%*s,%*s,%*s,%d",)...);

    }

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

...