html in c array

Gast #4088219
Lesenswert?

maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir
> aus
> einer Html datei ein c array erzeugt.

Wenn du jetzt noch verrätst, was das werden soll, kann dir sicherlich 
auch geholfen werden.
Im einfachsten Fall kann man sagen, daß die html-Datei schon ein Array 
aus Bytes ist. Aber das meinst du sicherlich nicht. Wie also sollen die 
Felder des Arrays aussehen, was sollen für Felder vorhanden sein, wie 
viele, mit was sollen sie gefüllt werden und so weiter...
Vielleicht wäre auch ein Beispiel ganz nützlich, mit der html-Datei und 
dem daraus zu erstellendem Array. Aber mit deinen jetzigen Angaben kann 
man nichts sinnvolles anfangen...
#4088238
Lesenswert?

maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir
> aus einer Html datei ein c array erzeugt.
1
int main(int argc, char** argv)
2
{
3
  FILE *html = fopen("website.html", "rb");
4
  if(!html)
5
    return -1;
6
  FILE *output = fopen("out.c", "w");
7
  if(!output)
8
  {
9
    fclose(html);
10
    return -1;
11
  }
12

13
  char read;
14
  fread(&read, sizeof(char), 1, html);
15
  fprintf(output, "char array[] = {%d", read);
16

17
  fread(&read, sizeof(char), 1, html);
18
  while(!feof(html))
19
  {
20
    fprintf(output, ", %d", read);
21
    fread(&read, sizeof(char), 1, html);
22
  }
23

24
  fprintf(output, "};\n");
25
  fclose(html);
26
  fclose(output);
27
  return 0;
28
}
Gast #4088245
Lesenswert?

Daa sollte dann so aussehen.
Ich suche ein programm welches die html datei einliest und daraus dann 
array generiert.

das programm sollte für Windows sein



static const unsigned char data_page[] = {
  0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 
0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
  0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
  0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
  0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
  0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};
Angehängte Dateien:
Gast #4088276
Lesenswert?

Hallo maik,

maik schrieb:
> Daa sollte dann so aussehen.
> Ich suche ein programm welches die html datei einliest und daraus dann
> array generiert.
>
> das programm sollte für Windows sein
>
> static const unsigned char data_page[] = {
>   0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e,
> 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
>   0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
>   0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
>   0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
>   0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};

Für sowas (und vieles andere) lohnt es sich meisten auch unter Windows, 
eine Python-Installation an Bord zu haben:
1
hx = list()
2
with open("datei.html", "r") as ifh:
3
    for line in ifh.readlines():
4
        for char in line:
5
            hx.append(hex(ord(char)))
6
print ', '.join(hx)

Liebe Grüße,
Karl
Gast #4088316
Lesenswert?

>Daa sollte dann so aussehen.
Dafür brauchst Du kein spezielles Programm.
Speichere die HTML Seite als Textdatai ab.


- Markiere allen Anführungsszeichen " und ersetze alle durch ein \"
- Markiere einen Zeilenumbruch und ersetzte alle durch \r\n" 
ZEILENUMBRUCH "
- Davor ein PROGMEM char Page1[] = {"
- Danach ein "};
Gast #4088390
Lesenswert?

Ich suche ein Programm welches mir aus der Webseite ein Array erzeugt.
So in etwa.
1
static const unsigned char data_page[] = {
2
0x2f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0,
3
0x25, 0x21, 0x3a, 0x20, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65,
4
0x72, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0xa, 0x3c, 0x68, 0x31,
5
0x3e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x20, 0x70, 0x72,
6
0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3c, 0x2f, 0x68,};
1
//Dazustellende Webseite
2
PROGMEM char Page1[] = {
3
 "<head>\r\n"
4
   "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">\r\n"
5
   "<title>Net-IO Webserver</title>\r\n"
6
   "<style type=\"text/css\">\r\n"
7
     "<!--"
8
     // "BODY {margin: 0 0 0 0; background-color: white; text-align:center;}\r\n"
9
     "HTML {background-color:#FFFFFF;font-family: Comic Sans MS;}\r\n\r\n"
10
     "P, DIV, H1, H2 {font-family: verdana, arial; font-size: 11px;}\r\n"
11
     "FIELDSET {background-color: #D9D9CC;}\r\n"
12
     "H1 {background-color: #CCCCFF; padding-top:5px; padding-bottom:5px;\r\n"
13
       "font-size: 20px; color: #004060; font-weight:bold; letter-spacing: 8px;\r\n"
14
       "border-top: 2px solid #EEEEEE; border-left: 2px solid #EEEEEE;\r\n"
15
       "border-bottom: 2px solid #004060; border-right: 2px solid #004060;}\r\n"
16
     "H2 {font-size: 15px; padding-top: 20px; padding-left:50px; padding-right:50px;\r\n"
17
       "color:#004080; font-weight:bold;}\r\n"
18
     "P, H1, H2 {margin: 0px 0px 5px 0px;}\r\n"
19
     "-->"
20
   "</style>\r\n"
21
 "</head>\r\n"
22
 "<body>\r\n"
23
 "<br>\r\n"
24
 "<table align=\"center\" width=\"650\" border=\"0\">\r\n"
25
   "<tr>\r\n"
26
     "<td colspan=\"2\">\r\n"
27
       "<div align=\"center\">\r\n"
28
       "<h1>Net-IO Webserver</h1>\r\n"
29
       "</div><BR>\r\n"
30
     "</td>\r\n"
31
   "</tr>\r\n"
32
   "<tr>\r\n"
33
     "<td colspan=\"2\">\r\n"
34
       "<div align=\"center\">\r\n"
35
       "<p>Software Version: 3.0</p>\r\n"
36
       "</div>\r\n"
37
     "</td>\r\n"
38
   "</tr>\r\n"
39
   "<tr valign=\"top\">\r\n"
40
     "<td>\r\n"
41
       "<fieldset style=\"width:300px\"><legend>Digital Control</legend>\r\n"
42
  
43
       "<form name=\"form1\" method=\"post\" action=\"\">\r\n"
44
         "<div align=\"left\">\r\n"
45
      // ------------ Digital-Ausgänge PortC[0..7] ------------
46
      //Port Schalten und Status %PORTCn bedeutet PORTC PINn
47
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"A\" %PORTC0>\r\n"
48
       "<span class=\"Stil2\">Port C Pin 0</span></p>\r\n"
49

50
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"B\" %PORTC1>\r\n"
51
       "<span class=\"Stil2\">Port C Pin 1</span></p>\r\n"
52

53
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"C\" %PORTC2>\r\n"
54
       "<span class=\"Stil2\">Port C Pin 2</span></p>\r\n"
55

56
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"D\" %PORTC3>\r\n"
57
       "<span class=\"Stil2\">Port C Pin 3</span></p>\r\n"
58

59
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"E\" %PORTC4>\r\n"
60
       "<span class=\"Stil2\">Port C Pin 4</span></p>\r\n"
61

62
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"F\" %PORTC5>\r\n"
63
       "<span class=\"Stil2\">Port C Pin 5</span></p>\r\n"
64

65
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"G\" %PORTC6>\r\n"
66
       "<span class=\"Stil2\">Port C Pin 6</span></p>\r\n"
67

68
       "<p><input type=\"checkbox\" name=\"OUT\" value=\"H\" %PORTC7>\r\n"
69
       "<span class=\"Stil2\">Port C Pin 7</span></p>\r\n"
70

71
       "<br>\r\n"
72
         // ------------------ WOL ------------------
73
         #if USE_WOL
74
         "<p><input type=\"checkbox\" name=\"OUT\" value=\"W\">\r\n"
75
         "<span class=\"Stil2\">WOL Enterprise</span></p>\r\n"
76
       #endif //USE_WOL
77
 
78
       "<pre align=\"left\"><input type=\"submit\" name=\"SUB\" value=\"Senden\"></pre>\r\n"
79
       "</div>\r\n"
80
     "</form>\r\n"
Gast #4088421
Lesenswert?

maik schrieb:
> Hallo wie der Betreff schon sagt suche ich ein Programm das mir aus
> einer Html datei ein c array erzeugt.

warum umständlich wenn es auch einfach geht?

Du kannst jedes Datei(auch html) in ein objekt für den Linker umwandeln. 
Damit kannst du dann einfach mit C darauf zugreifen.

http://www.atmel.com/webdoc/AVRLibcReferenceManual/FAQ_1faq_binarydata.html

Dann kann man auch mal schnell die html Datei anpassen.
#4088430
Lesenswert?

Ich habe mir dazu mal folgende Skripts erstellt:

html_to_inc.bat:
1
@echo off
2
rem Wandelt eine Eingabe HTML-Datei (Parameter 1) in eine Datei die im C-Programm
3
rem includiert werden kann. Am Zeilenanfang und -ende wird ein " hinzugefügt.
4
rem Sonderzeichen ' und " werden escaped, an die letzte Zeile wird ein ; angehängt.
5

6
sed 's/\''/\\\'\'/g;s/"/\\\"/g;s/^^/\\"/g;s/$/\\"/g' %1 > html_to_inc.tmp
7
sed $'s/$/;/g' html_to_inc.tmp > %2
8
rm html_to_inc.tmp

Und dann in ein Makefile gepackt:
1
# HTML-Dateien in Format für includierung zu wandeln
2
htmltoinc:
3
  @echo Konvertiere HTML-Dateien...
4
  html_to_inc.bat index.html index.html_inc
5
  html_to_inc.bat status.html status.html_inc
6
  html_to_inc.bat led.html led.html_inc
7
  html_to_inc.bat test.html test.html_inc
8
  html_to_inc.bat page_not_found.html page_not_found.html_inc
9
  @echo ...beendet.
10
  @echo

Und dann im C-Code mit
#include "index.html_inc"
einbinden.
#4089180
Lesenswert?

maik schrieb:
> Gibst denn kein programm für windows wo die html datei eingelesen wird
> und als ausgang dann mein array.

Wahrscheinlich nicht. Denn einerseits wäre die Parametrierung viel zu 
aufwendig (Wie soll das Feld heißen? Welchen genauen Typ und welche 
Attribute solle es haben? Soll ein '\r', ein '\n' oder ein '\r\n' 
angehangen werden? etc.) und andererseits gibt es genug Werkzeuge, die 
solche Aufgaben mit einem simplen Einzeiler erledigen, zum Beispiel die 
Unix-Shell:

1
$ cat myfile.html | (echo "PROGMEM char Page1[] = {"; awk '{printf("\t\"%s\\r\\n\"\n", $0)}'; echo "};")

Natürlich muss man die nicht selten etwas kryptische Handhabung solcher 
Werkzeuge erst einmal erlernen, die Zeit ist aber oft besser investiert 
als die immer wiederkehrende Suche nach einem passenden 
ready-to-use-out-of-the-box Tool.

Eine Sammlung geeigneter Techniken findest Du hier: 
http://docscript.sourceforge.net/docscript.pdf Da geht es zwar primär um 
die Erstellung von HTML-Dokumenten, die Techniken können aber ebenso gut 
zur Generierung von Quellcode eingesetzt werden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren