mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zeichenkette an hauptprogramm


Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Florian Bantner (scheintod)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Isses auch nicht :)

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

char * subProgramm( int parm ){



}

Autor: Florian Bantner (scheintod)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.