Ciao!
Devo realizzare un componente di un sistema più complesso (per esempio: un forum online) che possa leggere dei testi (per esempio: messaggi spediti al forum) la cui formattazione è descritta attraverso una serie di comandi BBCode.
Il testo originale mi viene fornito da shell dall'utente e io devo elaborarlo e stampare il testo "lavorato"(quindi con i tag "applicati") su standard output.
La mia idea era quella di lavorare direttamente sullo standard input e quindi attraverso la freopen ridirigerlo verso un altro file temporaneo, ma questo mi è stato sconsigliato in quanto potrebbero esserci problemi riguardo la portabilità dell'applicazione.
Quindi non mi rimane che lavorare su delle stringhe, trasferendo il testo da stdin ad un buffer, magari utilizzando una fgets dentro un ciclo e una strcat per concatenare tutte le righe.
Secondo voi va bene?

Detto questo non è che avreste delle idee riguardo all'implementazione?
Io avevo pensato di servirmi di una struct costituita da tanti campi per quanti sono i tag che "interpreto". Ogni qualvolta dal buffer leggo un tag(d'apertura) setto il bit corrispondente nella struct e così quando leggo un tag di chiusura resetto il bit corrispondente. Nel momento della stampa io dovrei andare a controllare per ogni carattere quali sono i bit attivati e rendere la stampa a seconda di questi, ma ho paura che in questo modo il costo sia troppo elevato; si avrebbe infatti un costo di n caratteri ^ n tag nella struct.

Il testo integrale del progetto è visualizzabile da qui:
http://margot.di.unipi.it/mediawiki/...S10-1-base.pdf

Grazie!