fork(2) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <malloc.h>
  4.  
  5. //удаление дубликатов
  6. size_t array_unique(char** arr, size_t size){
  7. size_t j, i;
  8. for(i = 0; i < size; ++i){
  9. for(j = i + 1; j < size; ++j){
  10. if(! strcmp(arr[j], arr[i])){
  11. free(arr[j]);
  12. arr[j] = arr[--size];
  13. --j;
  14. }
  15. }
  16. }
  17. return size;
  18. }
  19.  
  20. int main(void){
  21. size_t i, size = 7;
  22. char** arr = (char**)malloc(size * sizeof(char*));
  23. if(arr == NULL)
  24. return 1;
  25.  
  26. arr[0] = strdup("Бизон");
  27. arr[1] = strdup("Зубр");
  28. arr[2] = strdup("Зубр");
  29. arr[3] = strdup("Овцебык");
  30. arr[4] = strdup("Бизон");
  31. arr[5] = strdup("Бизон");
  32. arr[6] = strdup("Овцебык");
  33. //иходный вывод
  34. for(i = 0; i < size; ++i)
  35. puts(arr[i]);
  36. putchar('\n');
  37.  
  38. size = array_unique(arr, size);
  39.  
  40. //вывод после удаление дубликатов
  41. for(i = 0; i < size; ++i)
  42. puts(arr[i]);
  43.  
  44. for(i = 0; i < size; ++i)
  45. free(arr[i]);
  46. free(arr);
  47. return 0;
  48. }
  49.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
Бизон
Зубр
Зубр
Овцебык
Бизон
Бизон
Овцебык

Бизон
Зубр
Овцебык