?
Wenn du die html Datei und eventuell auch die Verwaltung der Daten selber schreiben willst, dann guckst du dir an, wie ein html Skelett aussieht und schreibst ne kleine html Testdatei mit printf/puts Funktionen.
Da ich mal wieder nicht die Finger von der Tastatur lassen konnte ,
hier ein Beispiel einer Tabelle, vllt. kannst du davon etwas gebrauchen:
#include <stdio.h>
#include <string.h>
#include <errno.h>
/* Ein HTML Skelett im html Code:
<html>
<head>
<title>Titel des Dokumentes</title>
</head>
<body>
... TEXT ...
</body>
</html>
*/
////////////////////////////////// Html skeleton //////////////////////////////
char* htmlb = "<html>"; // html_begin
char* htmle = "</html>"; // html_end
char* headb = "<head>"; // etc.
char* heade = "</head>";
char* titleb = "<title>";
char* titlee = "</title>";
char* bodyb = "<body>";
char* bodye = "</body>";
///////////////////////////////////////////////////////////////////////////////
char* h1b = "<H1>";
char* h1e = "</H1>";
char* title = "Hi Bruder!"; // Der unvermeidbare Titel :D
char* caption = "Highscorelist";
char* body_text = "Some ranks will be shown here in the html body ...";
char* fname = "test.htm";
#define NAMELEN 63
typedef struct player Player;
struct player {
char name[NAMELEN+1];
int points;
};
///////////////////////////////////////////////////////////////////////////////
// Spielerliste mit Punkten, zur Vereinfachung hartcodiert und sortiert.
#define N 3
Player players[N] = { {"Hans", 300}, {"Franz", 200}, {"Hugo", 100} };
///////////////////////////////////////////////////////////////////////////////
/* Die Tabellenstruktur im html Code:
<table border="1">
<tr>
<th>Player</th>
<th>Points</th>
</tr>
<tr>
<td>Player 1</td>
<td>Points Player 1</td>
</tr>
<tr>
<td>Player 2</td>
<td>Points Player 2</td>
</tr>
...
</table>
*/
///////////////////////// Tabellenelemente ////////////////////////////////////
char* tab_head[] = { "Player", "Points", NULL };
// Rahmenstärke zur Vereinfachung hartcodiert.
char* tableb = "<table border = \"1\">";
char* tablee = "</table>";
char* tdb = "<td>";
char* tde = "</td>";
char* thb = "<th>";
char* the = "</th>";
char* trb = "<tr>";
char* tre = "<te>";
///////////////////////////////////////////////////////////////////////////////
// Highscore Tabelle schreiben.
int write_ranklist ( FILE* fp, Player* p, unsigned rows ) {
unsigned i = 0;
fputs ( tableb, fp ); // <table ...
fputs ( trb, fp );
while ( tab_head[i] != NULL )
fprintf ( fp, "%s %s %s\n", thb, tab_head[i], the ), i++;
fputs ( tre, fp );
for ( i = 0; i < rows; i++ ) {
fputs ( trb, fp );
fprintf ( fp, "%s %s %s\n"
"%s %d %s\n",
tdb, p[i].name, tde,
tdb, p[i].points, tde );
fputs ( tre, fp );
}
fputs ( tablee, fp ); // </table>
return ferror ( fp );
}
// Schreibt den html Inhalt, ruft die Funktion write_ranklist auf.
int write_html ( FILE* fp ) {
fputs ( htmlb, fp ); // <html>
fputs ( headb, fp ); // <head>
fputs ( titleb, fp ); // <title>
fputs ( title, fp );
fputs ( titlee, fp ); // </title>
fputs ( h1b, fp ); // <H1>
fputs ( caption, fp );
fputs ( h1e, fp ); // </H1>
fputs ( heade, fp ); // </head>
fputs ( bodyb, fp ); // <body>
fputs ( body_text, fp );
if ( write_ranklist ( fp, players, N ))
return 1;
fputs ( bodye, fp ); // </body>
fputs ( htmle, fp ); // </html>
return ferror ( fp );
}
int main() {
FILE* fp = fopen ( fname, "wb" );
char* browser = "explorer.exe";
char command[256] = {0};
if ( fp == NULL ) return 1;
sprintf ( command, "%s %s", browser, fname );
if ( write_html ( fp ) )
puts ( strerror (errno) );
else
system ( command );
fclose ( fp );
return 0;
}
Gruß,
B.B.