У меня есть 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 может помочь мне пропустить ненужные мне части, но я не мог понять, как пропустить заголовок и выполнить сравнение. Я думал об использовании буфера, как то, что я делал для генерации случайных чисел, но я застрял.