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 buffer[]s 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
!
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.