Inhalt löschen

Hallo,

Habe folgendes Programm in C geschrieben(nur ein Ausschnitt):

struct person
{
char name[20];
char beruf[20];
int alter;
};

void eingabe();

void eingabe()
{
char taste;
int anzahl=0,platz;
person pers[10];
clrscr();

while(taste!=‚n‘)
{

clrscr();
printf("Ihr Name: ");
gets(pers[anzahl].name);
printf("Ihr Beruf: ");
gets(pers[anzahl].beruf);
printf(„Ihr Alter: „);
scanf(“%d“,&pers[anzahl].alter); fflush(stdin);
anzahl++;
printf("Nochmal eingeben? „);
taste=getch();
}
printf(“\nNun wird die Liste ausgegeben! ");

for(int i=0;i>platz;

Hier noch kurze Beschreibung, was das Programm machen soll:

Dieses Beispiel ist eigentlich nur eine Übung für einen Test in der Schule. Der Benutzer gibt beliebig oft Namen Beruf und Alter an.Z. B.

Name ? eingabe z.B. Hans
Beruf ? z.B Lehrer
Alter ? z.B 46

Das kann er beliebig oft machen.
Dann wird die komplette Liste ausgegeben. z.B

1
Name: Hans
Beruf: Lehrer
Alter: 46

2
Name: Erich
Beruf: Tischler
Alter: 35
.
.
.
.
u.s.w.

dann kann der Benuzer einen Platz auswählen, der gelöscht werden soll. Auf dieses Beispiel bezogen z.B. 2
Dann soll bei 2 stehen: (-1 bedeutet dann halt gelöscht)

Name: -1
Beruf: -1
Alter: -1

Die neue Liste sollte dann so aussehen:

1
Name: Hans
Beruf: Lehrer
Alter: 46

2
Name: -1
Beruf: -1
Alter: -1

Nun wollte ich wissen, wie es funktionier, den vom Benutzer eingegebenen Platz also den eingegebenen Namen den Beruf und das Alter durch -1 oder - zu ersetzten.Dafür wäre die Variable platz gedacht. Ich hoffe ihr könnt mir helfen. Vielen Dank!!!

Hallo,

also vor der Eingabe von Platz hast du eine Feld mit Strukturen des Types person.

(platz -1) ist dann der index des Feldes da dort der Index mit 0 los geht.
In der Struktur haengen Felder des Types char, Index dito.

dann wuerde das ganze etwa so aussehen

person[platz-1].name[0] = ‚-1‘
person[platz-1].name[1] = 0

// oder

strcpy(person[platz-1].name,"-1")

person[platz-1].beruf[0] = ‚-1‘
person[platz-1].beruf[1] = 0

// oder
strcpy(person[platz-1].beruf,"-1")

person[platz-1].alter = -1 // kein Feld sonder integer

aber vorsicht… platz darf nicht groesser als 10 sein, sonst schreibst du irgendwo in den Speicher.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

person[platz-1].name[0] = ‚-1‘
person[platz-1].name[1] = 0

Das wundert mich jetzt schon ein bisschen. ‚-1‘ sind zwei Zeichen und passen daher nicht in ein char. Ich empfehle

person[platz-1].name = „-1“;

Da setzt auch das \0-Byte am Ende automatisch.

Grüße,
Moritz