[C-Fehler]

05/04/2012 22:57 Dr. Coxxy#16
Quote:
Originally Posted by xNopex View Post
Kleine Verbesserung: ptr_to_next_output wird nie NULL (außer gleich am Anfang). Aber sonst stimmts.
was sich aus
Quote:
ptr_to_next_output->next innerhalb der schleife NIE 0 werden kann
direkt erschließt ;)

EDIT:

Quote:
Na gut ich habe gemogelt. Ich habs mir nicht aufgemalt.
das kommt davon wenn man cheatet :P
05/04/2012 22:58 xNopex#17
Ne das würde ja heißen, dass die Referenz auf das Nachfolge Attribut nie NULL ist. Das passiert jedoch sehr wohl, sonst würde die Schleife nicht terminieren.

EDIT: Oke das wörtchen innerhalb überlesen...
05/04/2012 22:59 Dr. Coxxy#18
Quote:
Originally Posted by xNopex View Post
Ne das würde ja heißen, dass die Referenz auf das Nachfolge Attribut nie NULL ist. Das passiert jedoch sehr wohl, sonst würde die Schleife nicht terminieren.
deswegen sagte ich ja innerhalb der schleife, ok bei der letzten anweisung theoretisch, aber danach kommt ja kein code mehr der i-was verbrechen kann.

EDIT: und xNopex war schneller ;)
05/04/2012 23:00 xNopex#19
Ja ich habs dann auch gemerkt... c:
05/04/2012 23:11 ƬheGame#20
Zufälligerweise ist das ein 0 Pointer da ich zum testen immer nur ein struct erstellte habe und somit kein Zweites habe auf das ich zeigen kann folglich ist next auf 0 gesetzt :)

Ich finde es zwar gut das ihr helfen wollt aber das Resultat eurer Diskussion ist mir grade unschlüssig ;)

Was habe ich jetzt falsch gemacht?

Meiner logik nach sollte das gehn

erstes Struct wird
ausgegeben und es setzt ptrtno auf next vom momentanen Struct
dann gibt es alles aus was im zweiten ist und
setzt ptrtno wider auf next irgendwann wird next = 0 sein weil ich das so programmiert habe ich will ja nicht irgendwo in den speicher zeigen =P und da sollte es nicht mehr ausgeben ....
05/04/2012 23:22 ms​#21
Das Programm geht nie in die Schleife, da

Quote:
Originally Posted by ƬheGame View Post
Code:
		while(ptr_to_next_output->next != 0)
schöner wäre

Code:
		do
		{
			printf("Name %s\n", ptr_to_next_output->name);
			printf("Age %d\n", ptr_to_next_output->age);
			printf("Size %d\n", ptr_to_next_output->size);
			printf("Id %d\n", ptr_to_next_output->id);
		}
                while(ptr_to_next_output = ptr_to_next_output->next)
05/04/2012 23:25 ƬheGame#22
Und wieso gibt es dann alle Daten aus? es stürzt erst danach ab ...

aber du hast recht theoretisch dürfte es nicht in die Schlaufe kommen da next 0 ist ...

habe das Problem einfach ->next wegnehmen da wenn ptr_to_next_output = 0 ist es nicht mehr irgendwohin zeigt wo ->next existiert :)
05/04/2012 23:28 ms​#23
Weil du dem next-Attribut deines Structs nicht NULL zugewiesen hast. In dem Fall zeigt next irgendwo in den Speicher und das Programm crasht, wenn es darauf zugreifen will.

In C haben nicht-globale Variablen einen undefinierten Wert wenn du sie nicht initialisierst.
05/04/2012 23:33 ƬheGame#24
Es funktioniert ja und ich hatte recht danke das ihr mich mit euem gelaber drauf gebracht habt :)
Ich habe next auf 0 zeigen lassen aber ich habe dann diese 0 einem ptr zugewiesen welchen ich dann auf ptr->next abgefragt habe was ich gar nicht kann wenn der ptr selber 0 ist :)
05/04/2012 23:34 ms​#25
Dass du next wegnehmen sollst habe ich als aller erstes vorgeschlagen. :|
05/04/2012 23:36 ƬheGame#26
bei dir hab ichs aber falsch verstanden du hast geschrieben while(ptr)
ohne vergleich =P while(ptr != 0) wäre das gewesen was ich brauche :)
05/04/2012 23:37 ms​#27
Das ist beides exakt das selbe.