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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.