HTML Datei in ANSI C aufrufen?
-
Hallo, leider habe ich über die Suche bis jetzt noch nichts gefunden.
Ich hoffe mir kann jemand von euch weiterhelfen.
Und zwar möchte ich in meinem Programm, welches in ANSI C geschrieben ist und ein paar kleine Spiele enthält, welche auch 'Rankinglisten haben, eine eine HTML Datei öffnen lassen. So dass ich die Highscores in eine online datenbank eintragen und anzeigen kann.Kann mir da jemand helfen?
DankeGruß
Skumper
-
Die HTML-Syntax bei selfhtml nachschauen und im Programm halt einfach
entsprechend ausgeben. HTML ist reines Textformat mit Kontrollinformationen
-
Was willst du nun also genau? Eine HTML-Datei öffnen und auslesen? Das geschieht wie mit jeder anderen Datei auch. Eine HTML-Datei über HTTP runterladen? Dann schau dir libcurl an (das geht aber über ANSI C hinaus). Eine HTML-Datei darstellen? Dann such dir einen HTML-Renderer, ala Webkit oder Gecko (das geht aber auch über ANSI C hinaus).
-
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.