Ich soll für die Schule ein Programm schreiben, bzw. eine Bibliothek in C, mit der es möglich ist, sich Werte in Diagrammen anzeigen zu lassen.
Grundsätzlich wär des kein Problem für mich. Allerdings halte ich ein solches Programm für recht sinnlos, wenn ich z.B. nur 3 Parameter mitgeben kann.
Deswegen hab ich mal gegoogelt und bin dann auf die Bibliotheks-datei stdarg.h gekommen.
Die funktioniert soweit auch recht gut. Hier mal der Code:
#include <stdio.h>
#include <stdarg.h>
void diagv(int a, ...){
int array[100];
va_list ap;
va_start(ap,a);
int x;
for(int i=0;i<a;i++){
x=int va_arg(ap, int);
array[i]=x;
}
for(int k=0; k<i; k++){
printf("%d\n",array[k]);
}
va_end(ap);
}
void main(){
diagv(9,55,3,6,9,4,7,9,12,2);
}
Mein Problem ist jetzt allerdings bei der Sache, dass der Code zwar die Werte die im Main angegeben werden mit übernimmt, aber ich nicht mehr machen kann (wird nicht mehr angezeigt). Und wenn ich einen Wert aus dem Aufruf im Main streiche einfach irgendeine Zahl >30000 angezeigt wird. (Ich denke mal, er nimmt sich einfach irgendeinen Wert, der im Arbeitsspeicher an der Stelle steht)
Um des ganze mal anschaulicher zu gestalten mach ich folgendes Beispiel:
Aufruf:
diagv(9,55,3,6,9,4,7,9,12,2,5)
Führt zur Ausgabe:
9
55
3
6
9
4
7
9
12
2
Aufruf:
diagv(9,55,3,6,9,4,7,9)
Führt zur Ausgabe:
9
55
3
6
9
4
7
9
335421
335668
Kann mir jemand sagen wo der Fehler liegt? Ich selbst hab keine Ahnung mehr. Vor allem weiß ich ned, warum er mir genau DIESE Anzahl an Werten ausgibt.
Gruß divus

Hilfe
Neues Thema
Antworten

Nach oben

