KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Variable in Funktionsstring einfügen
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Folgender Codeschnipsel:

Code:
    for (i=0;i<8;i++){
        ni=i++;
        Sprite[i] = oslLoadImageFilePNG("sprite/sprite_"+ni+".png", OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);
     }
    }


Bevor ihr euch fragt warum ich "ni" extra zu "i" genommen hab, ich brauch die später noch.

Erstmal geht es mir darum, dass ich "ni" in den String "sprite/sprite_.png" einfügen kann, bildlich gesehen.



Code is in C.


MfG. mipez

Nutze "sprintf" den so wie es da steht geht das nicht.

Code:
char path[30];
sprintf(path, "sprite/sprite_%d.png", i);


mfg

//EDIT: Scheiße, zu langsam^^

HacKmaN, kannste mir das bitte erklären? Wie soll das dann mit dem Einsetzen funktionieren?

mipez :
HacKmaN, kannste mir das bitte erklären? Wie soll das dann mit dem Einsetzen funktionieren?


sprintf funktioniert genauso wie printf mit variablen Arumentlisten.
Du kannst es also so benutzen:

sprintf(adresse_vom_ziel_string, "blaaa %d %d", bla1, bla2);

Smile

HacKmaN :

mipez :
HacKmaN, kannste mir das bitte erklären? Wie soll das dann mit dem Einsetzen funktionieren?


sprintf funktioniert genauso wie printf mit variablen Arumentlisten.
Du kannst es also so benutzen:

sprintf(adresse_vom_ziel_string, "blaaa %d %d", bla1, bla2);

Smile


Bringt mir aber nix, da ich den String ja nicht auf den Bildschirm ausgeben möchte oô

mipez :

HacKmaN :

mipez :
HacKmaN, kannste mir das bitte erklären? Wie soll das dann mit dem Einsetzen funktionieren?


sprintf funktioniert genauso wie printf mit variablen Arumentlisten.
Du kannst es also so benutzen:

sprintf(adresse_vom_ziel_string, "blaaa %d %d", bla1, bla2);

Smile


Bringt mir aber nix, da ich den String ja nicht auf den Bildschirm ausgeben möchte oô


Sprintf schreibt es ja nur in den String^^

Im String würde dann nach dem Beispiel "blaaa inhalt_von_bla1 inhalt_von_bla2" stehen.

Code:
char buffer[30];
        Sprite[i] = oslLoadImageFilePNG(sprintf(buffer, "sprite/sprite_%d.png", i), OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);


Funzt aber net oô
"main.c:34: warning: passing argument 1 of 'oslLoadImageFilePNG' makes pointer from integer without a cast"

mipez :

Code:
char buffer[30];
        Sprite[i] = oslLoadImageFilePNG(sprintf(buffer, "sprite/sprite_%d.png", i), OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);


Funzt aber net oô
"main.c:34: warning: passing argument 1 of 'oslLoadImageFilePNG' makes pointer from integer without a cast"


^^

Code:
char buffer[30];
sprintf(buffer, "sprite/sprite_%d.png", i);

oslLoadImageFilePNG(buffer, OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);

HacKmaN :

mipez :

Code:
char buffer[30];
        Sprite[i] = oslLoadImageFilePNG(sprintf(buffer, "sprite/sprite_%d.png", i), OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);


Funzt aber net oô
"main.c:34: warning: passing argument 1 of 'oslLoadImageFilePNG' makes pointer from integer without a cast"


^^

Code:
char buffer[30];
sprintf(buffer, "sprite/sprite_%d.png", i);

oslLoadImageFilePNG(buffer, OSL_IN_RAM | OSL_SWIZZLED, OSL_PF_5551);


Asooooo... die größe des Arrays kann ich anpassen, wenn ich weiß wieviel am Ende an Chars rauskommt oder?

EDIT: Immernoch derselbe Fehlercode oô

Mal eine andere Frage.

Warum packst du die einzelnen Sprites nicht in ein Spiteset, lädst es ein mal mit oslLoadImageFilePNG und schneidest dir mit oslSetImageTileSize immer das aktuelle aus ? Ist doch einfacher und am Ende bestimmt übersichtlicher.

PSP-Hilfe :
Mal eine andere Frage.

Warum packst du die einzelnen Sprites nicht in ein Spiteset, lädst es ein mal mit oslLoadImageFilePNG und schneidest dir mit oslSetImageTileSize immer das aktuelle aus ? Ist doch einfacher und am Ende bestimmt übersichtlicher.


Die oslLoadImage-Funktionen funktionieren doch nur max. bis 512x512 px.
Und in dem Beispiel hab ich noch relativ wenig Sprites (normal sind bei mir um die 12).

Referenz-URLs