Forum: Compiler & IDEs String automatisch verändern.


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 DAVID B. (bastler-david)


Bewertung
0 lesenswert
nicht 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)


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

von DAVID B. (bastler-david)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
DAVID -. schrieb:
> Vielen lieben dank scheint zu gehen.

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

von Adam Riese (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Ach ja klar hätte ich auch drauf kommen müssen danke.

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.