Gå til innhold

Problemer med vasprintf


Anbefalte innlegg

Jeg holder på med en console klasse som man ved hjelp en string table og va_list

lager en string som brukeren kan lese og det fungerer greit helt til jeg prøver og sende string via variable argument systemet

 

i va variablen (....) laster jeg en char*

 

void console::PrintErrorline(int Error, ...)

{

char* newLine = new char[255]; //variable til den ferdige feil stringen

char* cError = new char[256]; //variable til stringen hentet fra sting table

LoadString(hInstance, ProgError, cError, 256); //laster stringen "Feil ved lasting av %s" inn i cError

 

va_list ap;

va_start(ap, cError);

vsprintf(newLine, cError, ap); // her feiler programmet

va_end(ap);

.............// mere kode

}

til informasjon bruker jeg vs7

Den egentlige feilen skjer i output.c "får ikke lov til å lese 0xcccc"

 

jeg har prøvd å bruker %S å bare få en char ut og det funket

jeg har også kikket igjenom etter rare pointere og har ikke funnet noen.

stringe lastes riktig fra string listen.

 

Takker for all hjelp

Lenke til kommentar
Videoannonse
Annonse

Så vidt jeg kan huske, så skal parameter 2 til va_start være en peker til den siste "faste" parameteren. Eksempel(unnskylder meg atter en gang for Linux-C kode):

 

int

sprintf_wrapper(char *buf, char *format, ...)

{

int ret;

va_list arglist;

 

va_start(arglist, format);

 

ret = vsprintf(buf, format, arglist);

 

va_end(arglist);

return ret;

}

 

 

[edit: bytta til sprintf og la til retur ;)]

Endret av kattemat
Lenke til kommentar

Jepp det fiksa biffen kattemat :thumbup:

takker for alle svar

 

her er koden hvis noen vil se :nei:

 

void PrintErrorLine(int ProgError, ...)

{

char* newLine = new char[255];

char* cError = new char[255];

LoadString(hInstance, ProgError, cError, 256);

 

va_list ap;

va_start(ap, ProgError);

vsprintf(newLine, cError, ap);

va_end(ap);

 

if(strcmp(m_cHistory.front(),newLine))

{

if (m_cHistory.size() == m_iHistory)

m_cHistory.pop_back();

m_cHistory.push_front (newLine);

}

}

Lenke til kommentar
Jeg holder på med en console klasse som man ved hjelp en string table og va_list

lager en string som brukeren kan lese og det fungerer greit helt til jeg prøver og sende string via variable argument systemet

 

i va variablen (....) laster jeg en char*

 

void console::PrintErrorline(int Error, ...)

{

char* newLine = new char[255]; //variable til den ferdige feil stringen

char* cError = new char[256]; //variable til stringen hentet fra sting table

LoadString(hInstance, ProgError, cError, 256); //laster stringen "Feil ved lasting av %s" inn i cError

 

va_list ap;

va_start(ap, cError);

vsprintf(newLine, cError, ap); // her feiler programmet

va_end(ap);

.............// mere kode

}

til informasjon bruker jeg vs7

Den egentlige feilen skjer i output.c "får ikke lov til å lese 0xcccc"

 

jeg har prøvd å bruker %S å bare få en char ut og det funket

jeg har også kikket igjenom etter rare pointere og har ikke funnet noen.

stringe lastes riktig fra string listen.

 

Takker for all hjelp

for å sitere den legendariske kommentaren til Ken Thompson (vedkommende som designet den første stdarg.h filen(der va_list er definert)) i UNIX v6 kildekoden:

 

"You are not expected to understand this"

:D

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...