Zeichenkette an hauptprogramm

Gast #301803
Lesenswert?

Hallo Scheintod,
Danke erst mal für die Antwort.
So wie du das beschrieben hast funktioniert es jetzt auch. Habe ich
auch probiert.
Ich habe jetzt aber eine andere Anwendung. Da hab ich mich nicht
richtig ausgedrückt. Sorry, das is meine Schuld. Ich erkläre das mal
richtig.

Im Hauptprogramm habe ich eine Zeichenkette "temp". Die soll in eine
"include <temperatur.h> übergeben werden. Dann wird die Temperatur
dort in die Zeichenkette gechrieben und die geben ich dann wieder ans
Hauptprogramm zurück. In der "Main" wird die Temperatur dann auf dem
LCD ausgegeben. Ich probiere es schon die ganze Zeit, aber mehr wie ein
einzelnes ASCII-Zeichen bekomme ich nicht hin :(

Gruß Dennis
Persönliche Seite #301804
Lesenswert?

.

  "Ich erkläre das mal richtig."

gefolgt von

  Im Hauptprogramm habe ich eine Zeichenkette "temp".
  Die soll in eine "include <temperatur.h> übergeben
  werden.

ist ein schöner Wochenanfang. Ja, Lachen ist gesund.


Mal ernsthaft:

  #define TEXTLAENGE 20

  void hauptprogramm(void)
  {
    char temp[TEXTLAENGE];

    subProgramm(temp, TEXTLAENGE);
  }


  ...

  void subProgramm(char* p, int l)
  {
    if (!p)
      return;

    strncpy(p, "temperatur", l);
  }


Das entscheidende ist, daß der aufgerufenen Funktion ein Pointer auf
den String übergeben wird (das ist ja bei C-Arrays implizit so), und
sicherheitshalber sollte auch die Länge des Stringpuffers an die
aufgerufene Funktion übergeben werden, damit diese nicht falsche
Annahmen ob dessen Länge trifft und darauffolgende Speicherbereiche
überschreibt (der berühmte "buffer overrun").

Auch ist es sinnvoll, in Funktionen, denen Pointer auf was auch immer
übergeben werden, diese Pointer auf zumindest rudimentäre Gültigkeit zu
überprüfen (sie sollten nicht 0 sein).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren