Ich habe Probleme, meine Struktur/Array zu entfernen. Im Moment kann ich Max Array auf Größe 10 definieren. Ich kann das Array mit struct füllen, das Namen, Alter usw. enthält. Meine Suchfunktion lässt mich zwischen einer Reihe von Intervallen, sagen Alter 10 bis 25 suchen. Was ich meine remove-Funktion tun möchte, ist diejenigen all jene Personen im Alter zwischen 10-25 zu entfernen. Ich sollte in der Lage sein, neue Leute in die Datenbank einzutragen, solange es mein definiertes Limit nicht überschreitet. Im Moment scheint es zufällig Dinge aus dem Array zu entfernen.Entfernen des eingestellten Intervalls von struct
struct database
{
float age,b,c,d;
char name[WORDLENGTH];
};
typedef struct database Database;
search func();
.........
void remove(Database inv[], int *np, int *min, int *max, int *option)
{
int i;
if (*np == 0)
{
printf("The database is empty\n");
return;
}
search(inv, *np, low, high, option);
if (*option == 1)
{
for (i = 0; i<*np; i++)
{
if (inv[i].age >= *low && inv[i].age <= *high)
{
(*np)--;
}
}
}
}
Es entfernt nichts aus dem Array, sondern verringert die Anzahl der Datensätze.Wenn Sie also eine Übereinstimmung finden, wird dies der letzte Datensatz im Array sein, der "entfernt" wird. –
min, max, niedrig, hoch? Ist das dein echter Code? Wie auch immer, ich entferne kein Element im Array, nur indem ich 'np' dekrementiere. Sie müssen Elemente kopieren/überschreiben. – 4386427
siehe http://stackoverflow.com/questions/15821123/removing-elements-from-an-array-in-c und http://stackoverflow.com/questions/37911285/fastest-way-to-remove-huge- Anzahl der Elemente von einem Array-in-c – BeyelerStudios