Hi,
Oh, eine Hausaufgabe? ;-)
#include <stdafx.h>
Bitte bleibe vorerst bei Standard-C.
struct daten{
char name[20];
char vname[20];
int alter;
};
Du solltest Deinen Strukturen besser Namen geben, das ist dann später einfacher. Ein 'typedef' ist dafür z.B. geradezu prädestiniert.
int main()
{
char j, b;
Es sollten normalerweise alle Variablen mit einem Wertz initialisiert werden falls es nicht automatisch geschieht.
int menue=0, i=0, gesucht;
Der Datentyp 'int' sollte nur gewählt werden, wenn die Größe von 'int' bekannt ist. Passendere Datentypen gibt es in 'stdint.h'.
struct Knoten *anfang=0
Einen Pointer sollte man normalerweise mit dem Macro "NULL" initialisisieren. Dafür ist es da.
fflush(stdin);
fflush() kann danebengehen, die Rückgabe ist also auf Fehler zu testen ("errno" wird ebenfalls gesetzt).
scanf("%i" ,&menue);
scanf() kann danebengehen, die Rückgabe ist also auf Fehler zu testen.
printf("\tNeuer Knoten?j/n: ");
fflush(stdin);
Da Du das öfter benutzt würde ich daraus eine eigene Funktion machen.
j=getchar();
getchar() kann danebengehen, die Rückgabe ist also auf Fehler zu testen.
if(j == 'j')
'J' funktioniert dann nicht. Vorschlag:
#include <ctype.h>
j = tolower(j);
if(j == 'j')
{
ptr= (struct Knoten*) malloc (sizeof (struct Knoten));
Das Ergebnis von malloc() muß man vielleicht bei Experimenten und den riesigen Speichern heutzutage nicht mehr unbedingt testen, aber sowas sollte man sich gar nicht erst angewöhnen!
++i;
Der Unterschied zwischen i++ und ++i ist eigentlich nur noch für den Obfuscated C Contest von Bedeutung. Klarer Aufbau ist vorzuziehen.
else if (menue == 2)
Aufgrund der Tatsache, das es sich bei "menue" um einen Integerdatentyp handelt wäre evt ein switch() vorzuziehen.
if(!anfang)exit (2);
Für den Parameter von exit() gibt es die Macros "EXIT_FAILURE" und "EXIT_SUCCESS", die den jeweils passenden Rückgabewert auflösen.
while (p1 && gesucht != p1 ->zahl)
Klammern tun nicht weh und verbrauchen keinen Sprit. Nutze sie.
else if (menue == 4)
{
return 0;
}}
Die Funktion main() muß ein 'int' zurückgeben.
so short
Christoph Zurnieden