unsigned short wird nicht richtig übergeben, oder gespeichert
-
Hi Leute,
will die Funktionen vom main() in meinen Menü -> menu() aufrufen, aber die Variable vom Datentyp "unsigned short" wird nicht richtig ausgegeben.//includes... void menu(int byte[], unsigned short wordbyte[], float dwordbyte, char cbyte[], char PfadMitDateiname[], char Pfad[], char Dateiname[],fstream& txtdatei); //weitere Funktionen int main(void) { fstream txtdatei; char PfadMitDateiname[150]; char Pfad[120]=""; // Pfad der zu öffnenden Datei char Dateiname[28+1]=""; // Name der zu öffnenden Datei int byte[MAX]; char cbyte[4]; unsigned short wordbyte[1000];//Problem!!! float dwordbyte; menu(byte, wordbyte, dwordbyte, cbyte, PfadMitDateiname, Pfad, Dateiname, txtdatei); //!!! //weitere Funktionen welche hier im main() funktionieren(in menu() jedoch nicht) } void menu(int byte[], unsigned short wordbyte[], float dwordbyte, char cbyte[], char PfadMitDateiname[], char Pfad[], char Dateiname[], fstream& txtdatei) { //Switch-case mit Auswahlfunktionen case 3: byte[MAX]= AusDateiLesen(byte, cbyte, PfadMitDateiname, Pfad, Dateiname); if ( byte[MAX] == 99999 ) { system("CLS"); auswahl=6; break; } wordbyte[1000] = InWordKonvertieren(byte);//wordbyte sind das Problem!!! dwordbyte = InDwordKonvertieren(cbyte); Ausgeben(byte, wordbyte, dwordbyte,Dateiname, Pfad, txtdatei); //!!! BitweiseAusgeben(wordbyte,byte,Dateiname, Pfad, txtdatei);//!!! ModusAusgeben(byte, wordbyte,Dateiname, Pfad, txtdatei);//!!! printf("\nZurueck zum Menue -> 0 :"); scanf("%i", &end); if(end == 0) { auswahl=6; system("CLS"); } break; } //beim ausgeben wäre es so: for(i=0;i<5;i++)//vom main() aus funktioniert es, jedoch von menu() nicht { printf("%i ", wordbyte[i] ); txtdatei << wordbyte[i] << " "; }
-
Lies dir das durch:
-
Ok werde ich mal machen. Danke für die schnelle Antwort
-
oenone schrieb:
Lies dir das durch:
Hab ich aber ich verstehe es immer noch nicht.
-
wordbyte[1000] = InWordKonvertieren(byte);//wordbyte sind das Problem!!!
Das Array hat 1000 Elemente und in C beginnen Indizes mit 0. Du schreibst also außerhalb der Grenzen.
Wie du das behebst, musst du wissen. Was soll das überhaupt machen? Das ganze Array füllen? Ich nehme an, dann könntest du das so beheben, indem du einfach
wordbyte
der FunktionInWordKonvertieren
übergibst und in dieser Funktion die konvertierten Werte zuweist.
-
EinGast schrieb:
wordbyte[1000] = InWordKonvertieren(byte);//wordbyte sind das Problem!!!
Das Array hat 1000 Elemente und in C beginnen Indizes mit 0. Du schreibst also außerhalb der Grenzen.
Wie du das behebst, musst du wissen. Was soll das überhaupt machen? Das ganze Array füllen? Ich nehme an, dann könntest du das so beheben, indem du einfach
wordbyte
der FunktionInWordKonvertieren
übergibst und in dieser Funktion die konvertierten Werte zuweist.WOW!!! Danke Jetzt geht's es endlich und ich habe seit 3 Tagen nach dem Fehler gesucht aber nicht gefunden
:p
-
Das gilt aber auch für byte[MAX]
Das Element mit dem Index MAX gibt es bei dir nicht.