Forum: PC Hard- und Software html in c array


von maik (Gast)


Lesenswert?

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

von npn (Gast)


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...

von Wolfgang A. (Gast)


Lesenswert?

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

Notepad++ ?

von Max H. (hartl192)


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
}

von npn (Gast)


Lesenswert?

;-)

von maik (Gast)


Angehängte Dateien:

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,};

von Karl Käfer (Gast)


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

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?


von Wolfgang A. (Gast)


Lesenswert?

maik schrieb:
> Angehängte Dateien:
>
> web.html (5,86 KB, 13 Downloads)

Dir ist schon klar, dass das keine HTML-Datei ist, oder?

von Rainer1975 (Gast)


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 "};

von maik (Gast)


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"

von Phantomix X. (phantomix)


Lesenswert?

Notepad++


Ein Paar "Suchen & Ersetzen"-Läufe und du hast dein Ergebnis. Ansonsten, 
wenn du es dynamisch bzw. öfter machen müsstest, empfehl ich dir, das 
C-Programm von Max H zu nehmen und zu modifizieren

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

maik schrieb:
> PROGMEM char Page1[] = {
>  "<head>\r\n"

So wird nichts angezeigt. Laß das mit einem '\n' beginnen:
1
PROGMEM char Page1[] = {
2
 "\n<head>\r\n"
3
  ...

von Peter II (Gast)


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.

von Wolfgang (Gast)


Lesenswert?

Phantomix Ximotnahp schrieb:
> Ein Paar "Suchen & Ersetzen"-Läufe und du hast dein Ergebnis.

Und die lassen sich auch noch in ein Makro packen ;-)

von Thomas W. (thomas_v2)


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.

von maik (Gast)


Lesenswert?

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

wie zum beispiel für bilddaten solch ein konverter

von Max H. (hartl192)


Angehängte Dateien:

Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

maik schrieb:
> Ich suche ein Programm welches mir aus der Webseite ein Array erzeugt.

Du hast bereits ein Array. Da steht Deine Webseite drin.
1
//Dazustellende Webseite
2
PROGMEM char Page1[] = {
3
 "<head>\r\n"

Was da "Page1" genannt wird, das ist Dein Array. Da musst Du nichts 
umwandeln.

von A. H. (ah8)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.