Цель: , чтобы сохранить последние 5 дат из очень большого банка дат без сохранения всех дат. Это будет выполняться на микроконтроллере в стиле Arduino, но я подумал, что это больше относится к языку C в целом.
Мой текущий метод заключается в копировании массива даты из 6 di git даты (гггмм ) в последнюю позицию массива из 6 дат, сортируйте от самой последней до самой ранней, а затем выполняйте итерацию по всему банку дат.
Вот полный рабочий код:
int compareDates(const void *a, const void *b)
{
const char **ia = (const char **)a;
const char **ib = (const char **)b;
return -strcmp(*ia, *ib);
}
int main(){
char *latestDates[] = {"200418","991201","020718","050607","121030","000000"};
size_t len = sizeof(latestDates) / sizeof(char *);
char newDate[][7] = {"071122","150101"};
size_t numNewDates = sizeof(newDate)/sizeof(newDate[0]);
for(uint i=0; i<numNewDates; i++){
latestDates[5] = (char*)malloc(7);
strcpy( latestDates[5], newDate[i] );
cout << "Before sort: " << i << endl;
for (int i=0; i<6; i++)
{
cout << latestDates[i] << endl;
}
qsort(latestDates, len, sizeof(char *), compareDates);
cout << "After sort: " << i << endl;
for (int i=0; i<6; i++)
{
cout << latestDates[i] << endl;
}
}
free(latestDates[5]);
return 0;
}
Код также можно запустить / отредактировать здесь: cpp .sh / 3rl7y3
Вопрос: как вывести зависимость от указателей и mallo c из ? то есть инициализировать latestDates[6][7]
вместо *latestDates[]
.