Forum: Mikrocontroller und Digitale Elektronik Zeichenkette an hauptprogramm


von Dennis (Gast)


Lesenswert?

Hallo zusammen,
ich bin neuling und weiß nicht mehr weiter :o(

Ich möchte von einem Unterprogramm ein "char text[]" in das
Hauptprogramm "main" übergeben. Kann mir da eventuell jemand
weiterelfen??
Das dürfte doch nicht so schwer sein, oder??!!

Mfg Dennis

von Florian B. (scheintod)


Lesenswert?

Isses auch nicht :)

char text1[] = "blah";
char text2[] = "blah2";

char * subProgramm( int parm ){



}

von Florian B. (scheintod)


Lesenswert?

mist tab ...

also nochmal:

char text1[] = "blah";
char text2[] = "blah2";

char * subProgramm( int parm ){

   if( parm == 1 ){
      return text1;
   } else {
      return text2;
   }
}

alles klar?

Schoene Gruesse,

Scheintod

von Dennis (Gast)


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

von Rufus Τ. F. (rufus) Benutzerseite


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).

von Dennis (Gast)


Lesenswert?

Hey Rufus,
KLASSE es geht!!! Das Wochenende ist gerettet. Jetzt bin ich wieder
happy. War schon am verzweifeln.

VIELEN DANK und ein schönes Wochenende...

Grüße Dennis

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.