Мой подход заключается в том, чтобы отсканировать строку и дать указателям указать каждый символ после разделителей (и первого символа), в то же время назначить появления разделителя в строке на «\ 0». Сначала сделайте копию исходной строки (поскольку она является константой), затем получите количество расколов путем сканирования, чтобы передать ее параметру указателя len . После этого наведите указатель на первый указатель на указатель строки копирования, затем сканируйте строку-копию: однажды встретите разделитель, назначьте его «\ 0», поэтому предыдущая строка результата будет завершена, и укажите следующий указатель строки результата на следующий указатель символов.
char** split(char* a_str, const char a_delim, int* len){
char* s = (char*)malloc(sizeof(char) * strlen(a_str));
strcpy(s, a_str);
char* tmp = a_str;
int count = 0;
while (*tmp != '\0'){
if (*tmp == a_delim) count += 1;
tmp += 1;
}
*len = count;
char** results = (char**)malloc(count * sizeof(char*));
results[0] = s;
int i = 1;
while (*s!='\0'){
if (*s == a_delim){
*s = '\0';
s += 1;
results[i++] = s;
}
else s += 1;
}
return results;
}
Если вы просто проводите общий аудит, вы можете использовать Amazon S3 Inventory для получения полного ежедневного дампа всех ключей объекта и связанных метаданных.
Затем можно написать код для сравнения содержимого файла инвентаризации с записями в БД.
Если вы хотите получить все ключи в определенном сегменте за одну команду, вы можете использовать это.
aws s3api list-objects --bucket <bucket-name> --no-paginate
Когда у вас есть этот список, вы можете обработать его с помощью специального кода.