Me alegra que vayas progresando. Cuando hablas de FILE *, fopen(), fputs() y demás me parece que vas por buen camino.
Respecto al formato de excel, la verdad es que no lo conozco, y no sé si sea posible almacenar datos en tal formato de una forma relativamente directa. Tendrías que consultar con alguien que conociera más de ese tipo de formatos... :)
Ahora bien, me parece que almacenar los datos en un archivo de texto plano es, al menos en principio, una buena idea. Un estilo usado con frecuencia para almacenar información en archivos planos es por líneas, en donde cada campo es separado por algún caracter delimitador, por ejemplo las tabulaciones (\t).
Considera por ejemplo la siguiente variación de la función main():
Código:
int main()
{
FILE *da; /* Descriptor de archivo */
char *cadena = NULL;
char nombre[40];
int p=0;
Recibe_parametros(&cadena);
/* Imprimir cabecera HTTP para cumplir con un requisito de la
* interfaz CGI */
printf ("Content-Type: text/html\n\n");
#define ARCHIVO_SALIDA "inscriptos.txt" /* Archivo en donde se
* almacenan los datos */
da = fopen (ARCHIVO_SALIDA, "a");
if (! da) {
printf ("No pudo abrirse el archivo de salida.\n");
exit (1);
}
printf (
"Guardando los valores recibidos mediante POST en el archivo `%s'.\n",
ARCHIVO_SALIDA);
while (Identifica_variable(nombre, cadena, &p, 40))
fprintf (da, "%s\t", nombre); /* Separar con tabulaciones los
* datos */
fprintf (da, "\n"); /* Anyadir un salto de linea al final del archivo */
fclose (da);
if (cadena)
free(cadena); /* Liberar la memoria de `cadena' */
/* system("PAUSE"); */
return 0;
}
En esta variación usamos el apuntador `da' (descriptor de archivo) para almacenar datos en un archivo dado (inscriptos.txt) mediante llamados a la función fprintf(). Los datos luego pueden leerse desde el archivo fácilmente, ya que están almacenados en un formato muy simple: cada línea contiene los datos de una petición CGI, y cada campo está separado por tabulaciones. Quizás te sea útil mientras construyes tu propia solución. :)
Un cordial saludo