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


von Max K. (mku)


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)


Lesenswert?

strcpy kann kein %05
Wenn Du das nutzen willst, dann schaue bei sprintf(..)

von Dirk B. (dirkb2)


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) Benutzerseite


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)


Lesenswert?

NurEinGast schrieb:

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

Nein, falsch.

Wenn, dann verwende bitte snprintf()!

von Sebastian S. (amateur)


Lesenswert?

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

von 4444444444444444444444 (Gast)


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 );
...

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.