Forum: Mikrocontroller und Digitale Elektronik Arduino IDE String kopieren Problem


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 Daniel E. (danebn)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe ein kleines Problem, das für mich leider ziemlich unlogisch 
ist.

Ich habe in der Arduino IDE in meinem Programmcode einen String, welchen 
ich auf 2 weitere Strings kopieren möchte, da ich mit diesen dann 
unterschiedlich weiterarbeiten möchte.
Leider überträgt er immer nur auf den ersten String:

Beispiel zum Verständnis:

String Var1 = "Test";
String Var2;
String Var3;

Var2 = Var1;
Var3 = Var1;

Dabei kommt heraus:
Var2 = "Test";
Var3 = "";

Wieso überträgt er bei diesem einfachen Beispiel Var1 nicht auf Var3?

Danke für eure Antworten.

von Michael U. (amiga)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich sehe keinen Gund für solch ein Verhalten, würde mich also wundern.
Allerdings habe ich auch keine Lust, einen compilierbaren Testsketch zu 
schreiben und das Problem nachstellen zu können...

Gruß aus Berlin
Michael

von Daniel E. (danebn)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok, wenn ich nur dieses Beispiel in der Arduino IDE erstelle, dann 
funktioniert alles.

Im Anhang findet ihr einen Screenshot von diesem Codeausschnitt.

Dabei lese ich eine SMS von meinem GSM Modul aus.

str_Antwort ist die komplette Nachricht.

In diesem Fall kommt heraus:

str_Wartezeit = str_Antwort
str_Tel1 = ""

Wenn ich die beiden vertausche, dann ist das Ergebnis auch vertauscht.

von Forist (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Daniel E. schrieb:
> Im Anhang findet ihr einen Screenshot von diesem Codeausschnitt.

Und wie soll das jetzt jemand bei sich compilieren?

von Daniel E. (danebn)


Bewertung
0 lesenswert
nicht lesenswert
Forist schrieb:
> Und wie soll das jetzt jemand bei sich compilieren?

Kompilieren funktioniert ohne Probleme.

Ich dachte vielleicht kennt jemand das Problem bei Strings.

von Michael U. (amiga)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Daniel E. schrieb:
> Forist schrieb:
>> Und wie soll das jetzt jemand bei sich compilieren?
>
> Kompilieren funktioniert ohne Probleme.

bei mir nicht, die IDE will Dein Bild einfach nicht laden...
Ich bezweifle auch, das sich das bei Dir so compilieren läßt.
Ansonsten: ich kenne kein Problem mit Strings, außer vielleicht 
Speichermangel auf kleinen AVR. Ich beutze die Stringklasse gern und 
häufig auf den ESP und bisher hat die immer gemacht, was sie sollte.

Gruß aus Berlin
Michael

von Jade (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du kopierst Pointer, keine Strings.

In C sieht das in etwa so aus:

Die Variablen - die den String aufnehmen - sind als char-Arrays 
angelegt.


[/C]
#include <string.h>

...
  char var1[16] = "Test";
  char var2[16];
  char var3[16];

  strcpy(var2, var1);
  strcpy(var3, var1);
...

[/C]

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Jade schrieb:
> Du kopierst Pointer, keine Strings.

Nein. Das ist kein C, das ist C++, und die Klasse String versteht sehr 
wohl mit dem Zuweisungsoperator umzugehen.

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.