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.
dir ist hoffentlich klar, dass nach dem funktionsaufruf der speicherplatz von e wieder freigegeben wird da diese var nicht global deklariert wurde.
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.
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.