Forum: Mikrocontroller und Digitale Elektronik Variable in Zeichenkette einfügen


von Steffen (Gast)


Lesenswert?

Hallo,
ich komme hier gerade irgendwie nicht weiter. Es geht darum eine 
Variable in eine char Zeichenkette einzufügen und diese an eine Funktion 
zu übergeben. Die Funktion spielt eine Datei (trackx.wav) von einer SD 
Karte ab.
Bisher habe ich das immer wie folgt gelöst:

unsigned char track;
void PlayWave(char *name);

void PlayWave(char *name)
{
.
.
}
.
switch(track)
{
case 1: PlayWave("track1.wav");  break;
case 2: PlayWave("track2.wav"); break;
case 3: PlayWave("track3.wav");  break;
case 4: PlayWave("track4.wav"); break;
}
.
.
.

Nun ist mir das mit dieser Switch Anweisung zu blöd geworden, da ich sie 
ja je nach Anzahl der Tracks, die auf der Karte sind anpassen muss. 
Deshalb würde ich gerne den Wert der Variable in die übergebene 
Zeichenkette einbauen.
Ich hab es bereits mit sprintf probiert, was aber irgendwie nicht 
hinhaut:

sprintf(tracknumber, "track%c.wav", track);
PlayWave(tracknumber);

Ist das etwas der völlig falsche Ansatz, oder fehlt mir da nur eine 
Kleinigkeit?

Grüße
Steffen
von Xeraniad X. (xeraniad)


Lesenswert?

In 'track' befindet sich offenbar eine Zahl 1 .. 4 (und nicht der ASCII 
-Code für die Zeichen '1' .. '4'). Daher %d, und nicht %c verwenden. Der 
unsigned char wird bei der Übergabe an sprintf nach int gecastet.
von Steffen (Gast)


Lesenswert?

Danke! hat geklappt...

Grüße
von Lukas K. (carrotindustries)


Lesenswert?

Wenn track <= 9 ist, dann tut's was wie
1
char file[] = "track0.wav";
2
file[5]=track+'0';

nebenbei spart man sich den ganzen printf-Wasserkopf
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.