Forum: Compiler & IDEs String automatisch verändern.


von DAVID B. (bastler-david)


Lesenswert?

Hallo
Ich stehe vor dem Problem das ich für eine SD karte den Datei namen 
jeden Tag ändern möchte.
Das Datum ist nicht das Problem.
viel mehr das ändern der String kette für den namen.

Einer meiner letzten gemachten versuche war wie folgt:

char Dateiname [] = "0000000.CSV";
char zahl = (0);

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

  if (!SD.begin(4)) {
    Serial.println("Karte nicht erkannt");
    while (1);
  }
  Serial.println("Karte ok");
}

void loop() {
  delay(1000);
  zahl++;
  Dateiname [0] = '1';
  Dateiname [1] = zahl;
  Dateiname [2] = '3';
  Dateiname [3] = '4';
  Dateiname [4] = '5';
  Dateiname [5] = '6';
  Dateiname [6] = '7';
    Serial.println(Dateiname);

  File dataFile = SD.open(Dateiname, FILE_WRITE);

  if (dataFile) {
    dataFile.println(Dateiname);
    delay(50);
    dataFile.close();
    Serial.println(Dateiname);
  }
  else {
    Serial.println("Kann nicht gelesen werden");
  }

Leider wird die variable zahl nicht angenommen und endet als 
undefiniertes Zeichen.

(134567.CSV) oder oder als 1%34567.CSV

Hat Jemand eine hilfreiche Idee wie ich das einfach lösen kann ?
Ich habe schon versucht die variable zahl als folat und char zuspeichern 
ändert aber nix.
Und ja ich weiß das es nach 9 überlaufen würde aber so weit kommt es ja 
noch nicht.

Hilfe ??

Danke

von . . (Gast)


Lesenswert?

Dateiname [1] = zahl+ 0x30; //erzeuge ASCII

von DAVID B. (bastler-david)


Lesenswert?

Der wahnsinn !
Ich sitz 2 tage an dem mist und ich hätte nur das ergänzen müssen ?
hmm toll!

Vielen lieben dank scheint zu gehen.

von Adam Riese (Gast)


Lesenswert?

DAVID -. schrieb:
> Vielen lieben dank scheint zu gehen.

Aber nur bis 9, dann wird's "komisch".

von Adam Riese (Gast)


Lesenswert?

Vielleicht in Anlehnung and das hier?
1
sprintf (Dateiname, "%06d.CSV", zahl);

und diesen Mist hier weglassen?
1
  Dateiname [0] = '1';
2
  Dateiname [1] = zahl;
3
  Dateiname [2] = '3';
4
  Dateiname [3] = '4';
5
  Dateiname [4] = '5';
6
  Dateiname [5] = '6';
7
  Dateiname [6] = '7';

von DAVID B. (bastler-david)


Lesenswert?

Adam Riese schrieb:
> sprintf (Dateiname, "%06d.CSV", zahl);

Ja so was habe ich schon oft gelesen ich verstehe aber nicht wie % und 
die 06 oder gar das d da entstehen ?

Kann das jemand mal Entschlüssen ?
Was da genau gemacht wird ?
Vielen dank

von Adam Riese (Gast)


Lesenswert?

DAVID -. schrieb:
> Kann das jemand mal Entschlüssen ?

Das macht du gefälligst selbst indem du ein C-Lehrbuch liest.

von Jim M. (turboj)


Lesenswert?

DAVID -. schrieb:
> Kann das jemand mal Entschlüssen

Google: man sprintf

Das sind uuralte C-Lib Funktionen, wenn man die nicht kennt sollte man 
sich ein Buch über die Programmiersprache C besorgen und lesen.

C ist nicht freundlich zu Anfängern und Einsteigern - Literatur Studium 
ist Pflicht.

von DAVID B. (bastler-david)


Lesenswert?

Ach ja klar hätte ich auch drauf kommen müssen danke.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.