Я пытаюсь сделать проект... Проект должен читать из CSV-файла, в котором есть контакты. В контактах есть несколько полей, которые я читаю в массив структур типа contact. Пример: array.contactFirstName, массив contactLastName и т. д. Вот некоторая часть кода:
void string_InsertionSort(contact *array, int size, char *sortField){
waitForKey();
int i,j;
contact key;
if (strcmp(sortField, "First name") == 0){
for (i = 1; i < size; i++){
key=array[i];
j = i-1;
while ( (j >= 0) && strcmp(array[j].contactFirstName, array[j].contactFirstName) > 0){
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
}else if (strcmp(sortField, "Last name") == 0){
for (i = 1; i < size; i++){
key=array[i];
j= i-1;
while ( (j >= 0) && strcmp(array[j].contactLastName, array[j].contactLastName) > 0){
array[j + 1] = array[j];
j--;
}
array[j + 1] = key;
}
}else{
printf(" debuggggg");
}
}
Я реализую несколько алгоритмов сортировки для сортировки контактов в нескольких различных функциях.
У меня проблема в том, что в функции string_InsertionSort я передаю массив контактов, размер массива и поле сортировки, которое я хочу заказать. Внутри функции я сравниваю поле сортировки с полями, которые у меня есть, и, если оно верное, я выполняю сортировку.
Проблема в том, что у меня 15 разных полей, поэтому мне приходится повторять весь код для разных полей. Есть другой способ? Если да, то может ли кто-нибудь привести меня в пример? (вид доступа к члену структуры извне)