[gelöst] Veränderbare Variable für strings gesucht

Sehr geehrte Damen und Herren,

ist es möglich einen string in einer Variable (oder in einem anderen Medium) zu speichern und diesen string dieser Variable später durch einen anderen auszutauschen? Mein Ziel ist es, einen sich im Verlauf des Programmes ändernden Text, in einer Variable zu speichern, welche unter dessen Name abrufbar (d.h. auslesbar) ist.
Es ist ja nicht möglich, den string einer Variable des Typs "char " durch einen anderen zu ersetzen, wenn er bereits einmal festgelegt wurde. Ansonsten wird der Fehler "deprecated conversion from string constant to 'char' [-Wwrite-strings]" ausgegeben.

Wofür ich solch eine Variable benötige:
Ich habe vor, ein Einstellungs-Menü eines Weckers zu erstellen, welches durch ein LCD-Display ausgegeben wird. Dafür würde ich gerne eine Library erstellen, welche automatisch ein Menü erstellt. Dies soll die Library aus den Einträgen des Menüs erstellen, welche man ihr über die gesuchte Variablenform zur Verfügung stellt.

Vielen Dank im Vorraus
Ralf Rumbler

char puffer[80]; // Maximale Länge Deiner Texte + 1

strcpy(puffer,"Den Text");

Infos hier.

Gruß Tommy

Solange die Dimension des Textes nicht größer wird kannst Du den Inhalt der Elemente des Arrays beliebig ändern. Du kannst das Array aber während der Ausführung nicht vergrößern wenn Du mehr Platz brauchst.

Du kannst der Bibliothek/Funktion den Pointer zur Veriablen übergeben.
Grüße Uwe

Was dich offenbar verwirrt, ist dass

char test=„Testtext“ funktioniert, aber später
test=„Test2“ nicht mehr.

Das kommt daher, dass man das =-Zeichen nur beim Initialisieren nehmen kann.

Es ist ja nicht möglich, den string einer Variable des Typs "char " durch einen anderen zu ersetzen, wenn er bereits einmal festgelegt wurde. Ansonsten wird der Fehler "deprecated conversion from string constant to 'char' [-Wwrite-strings]" ausgegeben.

Och....
Man darf es halt nur nicht so falsch machen, so wie du das offensichtlich tust.

@combie

Dann erleuchte uns bitte.
Daß Es wohl falsch ist, sieht man ja schon daran, daß Es nicht funktioniert.
Wenn es einen Weg gibt, wäre Es doch 'toll', wenn Du uns Diesen aufzeigen würdest.
Oder möchtest Du uns nur wissen lassen, daß Du mehr weißt, als wir?
Das war, zumindest mir, vorher auch schon klar und bedarf deshalb keiner expliziten Präsentation - und wenn, dann doch mit dem Beweis, daß Dem auch so ist - also der vermeintlichen Lösung dieses Problems.

MfG

geht das schon wieder los

Hallo,

hier noch ein link zum nachsehen für die nächsten Aufgaben

wiki c Zeichenketten

Heinz

Dann erleuchte uns bitte.

Leider ist mir das unmöglich!

Erstens:
Leider ist der Fehler verursachende Code geheim.
Damit erübrigt sich eine Fehlerdiagnose, mangels Masse.

Zweitens:
Die "Wofür ich solch eine Variable benötige" ist so schwammig, dass ich mich außer Lage sehe einen konstruktiven Vorschlag zu machen.

Drittens:
Eine mögliche Lösung, dürfte in Richtung des buffers von Tommy56 gehen.
Eine meiner Lösungen würde vermutlich ähnlich aussehen, also kann ich DA erstmal nichts hinzufügen.

Schlussendlich:
Problem unklar.
Vermutlich irgendwo falsch abgebogen.

Also, Tipp:
2 Schritt zurück, Problem neu betrachten.
Information liefern, mit der man arbeiten kann

Ich kann also keine elegante Lösung anbieten, aber auf falsche Annahmen hinweisen, das geht.
Beispiel:

Es ist ja nicht möglich, den string einer Variable des Typs "char *" durch einen anderen zu ersetzen

Hier wird der Speicherplatz der Zeichenkette, in einen Topf geworfen, mit dem Zeiger darauf.
Das ist erstmal recht problematisch.....

Hallo,

mal ein kleines Beispiel gebastelt, vermutlich meinst du sowas

// Zeichenketten Variabe
char text1[40] = {"das ist Text 1"}; // 40 ist die max länge für den Text
char text2[40] = {"und das Text 2"};
char ausgabe[80];

void setup() {
  
  Serial.begin(9600);
}

void loop() {
  strcpy(ausgabe, text1); // text1 umladen in ausgabe
  Serial.println(ausgabe);
  delay(1000);
  strcpy(ausgabe, text2);
  Serial.println(ausgabe);
  delay(1000);
// Text verbinden
  strcpy(ausgabe, text1); // ersten Text 
  strcat(ausgabe, " ");   // Trennzeichen dazu
  strcat(ausgabe, text2); // zweiten Text
  strcat(ausgabe, " verbunden zu einem C string");// noch was dazu

  Serial.println(ausgabe);
  delay(1000);

}

Vielen vielen Dank, ihr habt mein Problem gelöst :wink:!

Wenn ich statt "char*", "char" verwende und zum Ändern strcpy, funktioniert es!

Hallo,

schön das wir Dir helfen konnten , und danke für die Rückmeldung.

Heinz

RRumbler:
Wenn ich statt "char*", "char" verwende und zum Ändern strcpy, funktioniert es!

Da bist du sicher nicht der Einzige und auch nicht der Letzte mit diesem Problem.
Deswegen ist es unheimlich wichtig zu wissen, was char (Speicher reservieren und Zeiger auf das erste Element setzen) macht, und was char* (nur Zeiger auf eine Speicherstelle) macht.