drobot
28-11-2007, 15:37
Ciao a tutti,
questo è il mio primo messaggio (di richiesta aiuto).
Ho un problema con le funzioni con numero di parametri variabile. Non sono molto pratico di C, e l'argomento non è dei più comuni...
Il programma sotto non funziona, nel senso che l'output è
Sono una Stringa
Sono una <caratteri a caso>
L'intero è 13
L'intero è -1079797532
invece di quello atteso...
Sicuramente sbaglio qualcosa, ma non so cosa.
Grazie!
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void myPrintfCore(const char* format, ...) {
char buff[256];
va_list ap;
va_start(ap, format);
vsprintf(buff, format, ap);
printf("%s", buff);
va_end(ap);
}
void myPrintf(const char* format, ...) {
va_list ap;
va_start(ap, format);
myPrintfCore(format, ap);
va_end(ap);
}
int main() {
char s[128];
int i = 13;
strcpy(s, "Stringa");
printf("Sono una %s\n", s);
myPrintf("Sono una %s\n", s);
printf("L'intero è %d\n", i);
myPrintf("L'intero è %d\n", i);
return 0;
}
questo è il mio primo messaggio (di richiesta aiuto).
Ho un problema con le funzioni con numero di parametri variabile. Non sono molto pratico di C, e l'argomento non è dei più comuni...
Il programma sotto non funziona, nel senso che l'output è
Sono una Stringa
Sono una <caratteri a caso>
L'intero è 13
L'intero è -1079797532
invece di quello atteso...
Sicuramente sbaglio qualcosa, ma non so cosa.
Grazie!
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
void myPrintfCore(const char* format, ...) {
char buff[256];
va_list ap;
va_start(ap, format);
vsprintf(buff, format, ap);
printf("%s", buff);
va_end(ap);
}
void myPrintf(const char* format, ...) {
va_list ap;
va_start(ap, format);
myPrintfCore(format, ap);
va_end(ap);
}
int main() {
char s[128];
int i = 13;
strcpy(s, "Stringa");
printf("Sono una %s\n", s);
myPrintf("Sono una %s\n", s);
printf("L'intero è %d\n", i);
myPrintf("L'intero è %d\n", i);
return 0;
}