wieso springt der compiler aus dem programm und lässt mich nicht das wort eigeben laut compiler ist alles richtig (In c)?

... komplette Frage anzeigen

3 Antworten

Eigentlich sollte der Compiler hier <char zeichen[a];> meckern, Arraygrößen müssen mit einer Konstanten definiert werden.

Hier sollte es heißen: char* zeichen = new char[a+1];

Zeichenfolgen in C werden mit einem Null-Charater beendet, deshalb "+1"

Vor return muss dann noch stehen: "delete [] zeichen;"

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von J0T4T4
06.03.2016, 16:14

Nur das man in C nicht new und delete, sondern malloc() und free() verwendet.

1

Nur C99 erlaubt VLAs (Variable Length Arrays), aber da man wohl eingesehen hat, dass VLAs eine gaaaaaaaaaaanz schlechte Idee waren, sind sie seitdem auch nicht mehr im Standard enthalten, und gelten als "deprecated".

Stattdessen lieber mit malloc() und free() arbeiten, und - wie in Mikkeys Antwort bereits erwähnt - den Platz für die Abschließende '\\0' nicht vergessen.

Von VLAs solltest du UNBEDINGT die Finger lassen!

Im Notfall nimm alloca() oder ähnliches, aber sei dir darüber im Klaren, dass der Stack wesentlich begrenzter ist, als der Heap. Ich lege auf dem Stack höchstens konstante Arrays mit maximal 4 Byte an (z. B. für Magic-Nummern in Datei-Headern) ... mehr nicht. :)

Antwort bewerten Vielen Dank für Deine Bewertung

also bei mir meldet der compiler eine menge fehler.

aber zum "springen" habe ich ihn nicht bringen können. wohin springt er dann bei dir?   ;-)

du scheinst tatsächlich eine abart von C zu benutzen. da kann ich nur dringend raten, davon abstand zu nehmen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Alinchen24
06.03.2016, 18:11

Es lag nur an dem a xD jetzt funktioniert auch alles wieder super :) danke trz ^^

0

Was möchtest Du wissen?