Forum: Compiler & IDEs Compiler macht nur scheiße


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.