Forum: Compiler & IDEs Compiler macht nur scheiße


von Malte Struebert (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

also langsam wirds echt merkwürdig. Selbst so simple Befehle wie ein
strlen funktionieren nicht!

bei folgendem Code:

void reverse(char *Text)
{
  int b=0;
  int e;
  e = strlen(Text);
  itoa(e,Text,10);
}

steht in e nachweislich eine Zahl größer 5000 drin... obwohl der String
der als Text übergeben wurde nur 3 Zeigen + die abschließende 0 lang
sein kann! (Hard codiert mittels strcpy(s,"ABC");)

Gibts vieleicht irgendwelche Compilerschatler die man im makefile noch
tätigen sollte, ich poste das Makefile mal mit, vieleicht fällt einem
ja was auf!

Gruß
Malte.

von BAB (Kai K.) (Gast)


Lesenswert?

dir ist hoffentlich klar, dass nach dem funktionsaufruf der
speicherplatz von e wieder freigegeben wird da diese var nicht global
deklariert wurde.

von Malte Struebert (Gast)


Lesenswert?

Hi,

das ist schon klar, nur sollte der umgewandelte Text ja in der Var.
Text gespeichert sein oder nicht?!
Ich hab die zum Text halt einfach nur überschrieben die Funktion gibt
natürlich so keinen sinn das ist mir auch klar aber daruf wollte ich ja
auch garnicht hinaus.

Gruß
Malte.

von BAB (Kai K.) (Gast)


Lesenswert?

was ist "text" denn?? ein array?

von Malte Struebert (Gast)


Lesenswert?

Hi,

text ist ein Array, genau.
char Text[10];
und übergeben wird es mit Funktion(char *Text[])

Sollte aber doch eigentlich funktionierten oder?

Gruß
Malte.

von Joerg Wunsch (Gast)


Lesenswert?

Funktioniert nicht.  Gehe zurück zu K&R, Kapitel 5 ``Pointers and
Arrays''.  (Meine Frau will mir auch immer nicht glauben, daß sie
das nochmal lesen sollte. ;-)

Entweder

Funktion(char *Text) { ... }

oder

Funktion(char Text[]) { ... }

Beide Formen sind äquivalent.

Hast Du denn keine Compilerwarnung bekommen?

von Malte Struebert (Gast)


Lesenswert?

Hi,

nein hab keine bekommen, bin mir aber jetzt wo dus scheribst auch net
wicher ob es nicht doch ein Char Text[] war also ohne das *

die klammern hatte ich auf jeden fall da bin ich sicher, muß daheim
nochmal nachsehen...

Gruß
Malte.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.