Forum: Mikrocontroller und Digitale Elektronik strcpy frage (name durchnummerieren)


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 Max K. (mku)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte gerne bei mir eine Datei erstellen, welche später 
durchnummeriert werden soll.

Das heißt, es soll z.b. dat00000.txt, dat00001.txt, dat00002.txt ... 
erstellt werden.

Jetzt wollte ich dies mit einem strcpy realisieren wie folgt:
1
char ptr;
2
3
strcpy(ptr, "DAT%05d.txt", datei_int++);

Da kommt aber leider ein fehler.

Wie kann ich es anders realieren?

Vielen Dank

von NurEinGast (Gast)


Bewertung
-1 lesenswert
nicht lesenswert
strcpy kann kein %05
Wenn Du das nutzen willst, dann schaue bei sprintf(..)

von Dirk B. (dirkb2)


Bewertung
0 lesenswert
nicht lesenswert
Max K. schrieb:
> Wie kann ich es anders realieren?

Indem du die richtige Funktion dafür nimmst.

strcpy kopiert nur einen C-Strings. Nichts anderes.


Du möchtest printf in einen String machen.
Dafür gibt es sprintf.

Und ein char ist kein C-String

von Rufus Τ. F. (rufus) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Max K. schrieb:
> char ptr;
>
> strcpy(ptr, "DAT%05d.txt", datei_int++);

Sieh Dir nochmal genau den Datentyp von "ptr" an, abgesehen davon, daß 
strcpy nicht das tut, was Du Dir erhoffst.

von Mike M. (mike_m383)


Bewertung
0 lesenswert
nicht lesenswert
NurEinGast schrieb:

> Wenn Du das nutzen willst, dann schaue bei sprintf(..)

Nein, falsch.

Wenn, dann verwende bitte snprintf()!

von Sebastian S. (amateur)


Bewertung
0 lesenswert
nicht lesenswert
Hier wird die Mikrocontroller-Hilfe wohl noch viel Unterstützung leisten 
müssen.
Abteilung: Von Nix auf 99.

von 4444444444444444444444 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Sebastian S. schrieb:
> Hier wird die Mikrocontroller-Hilfe wohl noch viel Unterstützung
> leisten
> müssen.
> Abteilung: Von Nix auf 99.

 ^^

wobei sprintf auch gehen sollte
snprintf ist aber sicherer

[c]
char array[20];
snprintf( array , 20 , "DAT%05u.txt", datei_uint++ );


file = f_open( array );
...

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.