Das ist mein aktueller Code:

#include <stdio.h>
#include <stdlib.h>

size_t copy_duplicates(int dst[], const int src[], size_t len)
{
  size_t num_duplicates = 0; // Zählvariable für Duplikate

  for (size_t i = 0; i < len - 1; i++) {
    size_t count = 1; // Anzahl der Vorkommen des aktuellen Elements
    for (size_t j = i + 1; j < len; j++) {
      if (src[i] == src[j]) {
        count++; // Zähle die Anzahl der Vorkommen
      }
    }

    // Kopiere das aktuelle Element entsprechend seiner Anzahl der Vorkommen
    for (size_t k = 0; k < count - 1; k++) {
      dst[num_duplicates++] = src[i];
    }
  }

  return num_duplicates; // Gib die Anzahl der Duplikate zurück
}

int main()
{
  const int src[] = { 5, 2, 5, 7, -7, 3 };
  int dst[50];
  size_t num_duplicates = copy_duplicates(dst, src, sizeof(src) / sizeof(src[0]));
  printf("%zu\t", num_duplicates);
  printf("{");

  for (size_t i = 0; i < num_duplicates; i++) {
    printf("%d%s", dst[i], (i < num_duplicates - 1) ? "," : "");
  }

  printf("}\n");
  return EXIT_SUCCESS;
}

Er gibt mir aber erst wenn ich mehr als zwei gleiche Zahlen eingebe, die richtige Ausgabe aus.

Ich möchte, dass ich beispielsweise bei

const int src[] = { 5, 2, 5, 7, -7, 3 };

in der Ausgabe 2 für die Anzahl gleicher Zahlen und dann { 5, 5 } für die Zahlen die mehrmals vorkommen. Bis jetzt kommt bei mir immer nur { 5 } in der Ausgabe heraus.