String in Char-Array wandeln

Der chaotische Hauptfaden

Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese

Antworten
plottermeier
Beiträge: 1456
Registriert: Fr 16. Aug 2013, 14:32

String in Char-Array wandeln

Beitrag von plottermeier »

Moin,
ich möchte meinem Arduino- Solarlogger beibringen, die Dateien auf der SD-Karte mit dem aktuellen Datum zu benennen.
Dazu hab ich folgende Funktion gebastelt und versuche grad seit fast zwei Stunden, den Dateinamen, der als String übergeben wird,
in ein Array of Char für die SD.open Funktion passend zu machen.
" myFile = SD.open("123.txt", FILE_WRITE);"
funktioniert. Der Code unten bei Aufruf mit name="123.txt" nicht. Hat wer nen Tip, wie man das konvertieren kann?

Gute Nacht
Jens

Code: Alles auswählen

void write_sd(int para,String name,String wert)
   {  
      if (!SD.begin(chipSelect)) 
      {
         Serial.println("initialization failed!");
      }
      else
      {
         Serial.println("initialization done.");
         myFile = SD.open(name, FILE_WRITE);
      }  
   }
huberkarle01
Beiträge: 20
Registriert: Di 17. Dez 2013, 10:33
Wohnort: Hessisches Hinterland

Re: String in Char-Array wandeln

Beitrag von huberkarle01 »

Keine Ahnung ob dir das hilft beschäftige mich selbst erst seit 2 Tagen mit Arduino.. Aber laut Reference müsste das mit toCharArray() gehen?
http://arduino.cc/de/Reference/StringToCharArray

Code: Alles auswählen

char charName[name.length() +1];
name.toCharArray(charName, sizeof(name));
So etwas hab ich auch bei google gefunden, müsste also passen :?

btw. warum kann ich char charName[] nicht in toCharArray direkt rein packen.. Wirft mir der Syntaxcheck nen Error aus.. Komische Sache dieses C++ :D



Guten Morgen!
huberkarle
Benutzeravatar
felixh
Beiträge: 593
Registriert: So 11. Aug 2013, 13:46

Re: String in Char-Array wandeln

Beitrag von felixh »

einfacher ist c_str().

string.c_str();
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: String in Char-Array wandeln

Beitrag von Fritzler »

Warum nicht von Anfang an als Array declarieren?

Muss dann aber heißen:
char str[] = "keks";

Funktionsübergabe dann als Zeiger:
char *str
Benutzeravatar
xoexlepox
Beiträge: 4815
Registriert: So 11. Aug 2013, 19:28
Wohnort: So etwa in der Mitte

Re: String in Char-Array wandeln

Beitrag von xoexlepox »

huberkarle01 hat geschrieben:btw. warum kann ich char charName[] nicht in toCharArray direkt rein packen..
Weil charName[N] ein Element des Arrays, und somit ein "char" ist. "charName" ist durch die Definition ein Array, welches als ein Zeiger auf das erste Element übergeben wird (ist also ein "char *"). Deshalb meckert der Compiler, daß ein falscher Typ übergeben wird. Was jedoch gehen sollte, ist "&charName[N]", also die Adresse eines Arrayelements, was wiederum ein Zeiger ist. Wenn man diese Zeigerei (und die Synonymität mit Arrays) einmal begriffen hat (was eine Weile dauern könnte), macht es richtig Spass, damit zu "hantieren" ;)
Benutzeravatar
Fritzler
Beiträge: 12603
Registriert: So 11. Aug 2013, 19:42
Wohnort: D:/Berlin/Adlershof/Technologiepark
Kontaktdaten:

Re: String in Char-Array wandeln

Beitrag von Fritzler »

Oder man schreibt gleich:
"charName + N" :lol:
plottermeier
Beiträge: 1456
Registriert: Fr 16. Aug 2013, 14:32

Re: String in Char-Array wandeln

Beitrag von plottermeier »

Hallo,

und guten Morgen. Danke für die Antworten. Gleich der erste Versuch hat prima hingehauen:

char charName[name.length() +1];
name.toCharArray(charName, sizeof(name));

Glaube, das mit dem Zeiger auf ein Arrayelement habe ich nun auch begriffen. Werde da heute "abend" mal etwas mit spielen.
Wenn ich es schaffe, heute und morgen jeweils noch ne Stunde länger zu machen, kann ich Montag direkt danach zur Arbeit
und ich erspare mir den Montag-Wecker...

verlotterte Urlaubsgrüße
Jens
Antworten