PDA

View Full Version : [C]Problema effetto battitura


agente mm8
29-03-2009, 18:29
Salve a tutti, sto scrivendo un programma in C dove voglio ricreare l'effetto battitura, e per farlo lancio il metodo sleep passandogli come parametro i millisecondi che indicano quanto tempo fermarsi.
Così ho scritto questa funzione:
void hprintf(char *message){
int length = strlen(message);
int i;
for(i=0; i<len; i++){
printf("%c", message[i]);
sleep(100);
}
}
Spesso però devo passare una stringa dove vanno inseriti vari parametri, quindi dovrei fare una cosa tipo:
"Benvenuto, %s", variabile
Ma hprintf accetta un solo argomento.
Avevo pensato a due possibili soluzioni:
1. far accettare due o tre parametri a hprintf, e se non servono inviargli NULL, ma non so se così possa funzionare
2. non mettere nessun argomento a hprintf (ho sentito che così accetta un numero indefinito di parametri), ma se così fosse, come faccio a prelevare questi parametri? come vengono chiamati?

||ElChE||88
29-03-2009, 18:32
2. non mettere nessun argomento a hprintf (ho sentito che così accetta un numero indefinito di parametri), ma se così fosse, come faccio a prelevare questi parametri? come vengono chiamati?
Sbagliato.
Ci vuole stdarg.h (http://en.wikipedia.org/wiki/Stdarg.h).

agente mm8
29-03-2009, 18:41
stdarg.h?
cerco un po' in giro...

DanieleC88
29-03-2009, 19:31
#include <stdarg.h>
#include <stdio.h>

void stampaMessaggio(const char *formato, ...)
{
va_list ap;

va_start(ap, formato);
vfprintf(stderr, formato, ap);
va_end(ap);
}

Ovviamente non va bene questa, così com'è, perché non c'è l'effetto della battitura dei tasti. Se indaghi e ci ragioni un po' la soluzione la trovi abbastanza rapidamente. ;)

agente mm8
30-03-2009, 14:04
Ho risolto, grazie.