stress mit variablen

ollek81

Erfahrenes Mitglied
Tach!

Und gleich das nächste:

Programmcode:

1 #include <stdio.h>
2
3 #define MAX 5
4
5 struct schaltelem
6 {
7 char bezeich;
8 char name[MAX];
9 unsigned int knoten[3];
10 float wert;
11 };
12
13 struct schaltelem netzliste[10];
14
15 ...(int main() { usw.)
16 int j;
17
18 for(j=1; j<=4; j++)
19 {
20 printf("\nKnoten%d: ", j);
21 scanf("%d", netzliste[1].knoten[j-1];
22 }
23
24 printf("\nWert: ");
25 scanf("%f", &netzliste[1].wert);
26
27 ...usw.

Irgendwie beißen sich die beiden Variablen netzliste[1].knoten[3] und netzliste[1].wert.
Entweder ich hab am Ende die richtigen Werte aller Knoten aber .wert ist = 0
oder .wert ist richtig (so wie eingegeben) und in .knoten[3] steht der letzte Müll (z.B.:102938299)!
Je nachdem welche var. ich mit welchem Typ einlesen lasse...
WIESO??

Ich kann auch "wert" nicht als double deklarieren (in Zeile 10). Dann ließt der nicht mehr ein!

Alles verstanden??

Wer kann mir helfen??


ollek81
 
Zuletzt bearbeitet:
.knoten[3] steht der letzte Müll (z.B.:102938299)!
Das ist ganz logisch, das da der "letzte Müll" drin steht. Denn du deklarierst ein unsigned int Array mit 3 Elementen.
"unsigned int knoten[3]"
Das heist du darfst das Array nur von 0-2 ansprechen, da 3 bereits über die Elemente hinaus geht und auf einen Speicherbereich zugreift, der nicht für das Array reserviert ist.

Außerdem solltest du zwischen den beiden scanf's denn Tastaturpuffer leeren mit flushall().

Gruss Homer

PS. das ist mein 200. Post *g*
 
Hi homer!

Welch eine Ehre, dass du dein 200. post gerade mir widmest :p

Ja, danke!! Ich bin durch das "dauercomputern" etwas durcheinander gewesen. mit diesem bei 0 anfangen usw. war mir entfallen. Komsch aber nur, dass der Compiler oder das Prog zur Laufzeit nichts sagen.
Ohne das scanf(... , .wert) hat der das einfach noch hinten dran gehängt!?!?

fflush() und flushall() gehen irgendwie nicht richtig (Gnu-Compiler unter Cygwin {simulierte UNIX-Umgebung}) das nimmt der gar nicht war.
Ich mach wenn gets(irgendworein). Das geht auch...

DANKE nochmal!!!!

ollek81

P.S.: Irgendwie war das mein 50.!! Jaaa! Das Jubiläumsforum :)
 
Komsch aber nur, dass der Compiler oder das Prog zur Laufzeit nichts sagen.
Tja das sind die Eigenheiten von C, darum musst du dich schon selbst kümmern, dass du nicht einfach über einen Speicherbereich hinausgehst.

fflush() und flushall() gehen irgendwie nicht richtig (Gnu-Compiler unter Cygwin {simulierte UNIX-Umgebung})

Ich glaube da gibt es aber auch sowas ähnliches, ich hab mal in Linux mit gcc was gemacht, aber ich kann dir leider nichtmehr sagen, wie die Funktion hieß.

Gruss Homer
 
hast recht!! Hab ich im Eifer des Gefechts vergessen!! (Im Programm bei mir steht es nämlich drin!)

Thx!!

Ollek81
 

Neue Beiträge

Zurück