HP in char Array [variable Ausgabe]



  • Hallo,

    ich bin gerade dabei eine Homepage zu erstellen in einem char Array. Mittlerweile bin ich soweit, dass ich dieses char Array in mehrere Arrays unterteilen möchte, wobei die Trennungspunkte immer die variablen Ausgaben vom User sein sollen.

    Ein Teilarray beinhaltet z.B. den String bis zur nächsten User-Ausgabe, die variabel sein kann (in diesem Fall die Subnet-Mask, die gerade verwendet wird).

    char HpArray3[] =  /* ausgabe der aktuell verwendeten subnet-mask*/
    {
    "<input maxlength=\"3\" id=\"sub1\" name=\"sub1\" size=\"3\" type=\"text\"" 
    };
    

    Wenn der User nach dieser Homepage anfrägt, stelle ich sie mit den aktuellen variablen Ausgaben (input-felder) zusammen. Ich arbeite auf Mikrocontroller-Basis.

    memcpy((void *)pdata, (void *)&HpArray3[0], strlen((const char *)HpArray3)); 
    pdata += strlen((const char *)HpArray3); 
    /* jetzt kommt die variable user-ausgabe value=192.0.255.255 /> */
    memcpy((void *)pdata, (void *)&User3[0], strlen((const char *)User3)); 
    pdata += strlen((const char *)User3);
    

    Stellt das eine gute Vorgehensweise dar, oder gibt es schnellere / effizientere Lösungsansätze, auf die ich gerade nicht stoße?

    Gruß
    Hilfesuchender



  • hi,
    musst du die seite unbedingt im ram zusammenbauen? reicht es nicht, wenn du dich einzelnen teile ausgibst?



  • html0r schrieb:

    hi,
    musst du die seite unbedingt im ram zusammenbauen? reicht es nicht, wenn du dich einzelnen teile ausgibst?

    die festen Parts die keine variablen Element enthalten könnte ich auch im Flash lagern - allerdings ist der Zugriff natürlich dann um einiges langsamer.

    Die variablen Elemente wie die SubnetMask können vom User während des Betriebs verändert werden. Genauso gibt es eine Zeile mit Fehlermeldungen die variabel sein soll (vor allem in der Länge, da die Fehlermeldungen unterschiedlich lang sind).



  • _Hilfesuchender schrieb:

    html0r schrieb:

    hi,
    musst du die seite unbedingt im ram zusammenbauen? reicht es nicht, wenn du dich einzelnen teile ausgibst?

    die festen Parts die keine variablen Element enthalten könnte ich auch im Flash lagern - allerdings ist der Zugriff natürlich dann um einiges langsamer.

    Die variablen Elemente wie die SubnetMask können vom User während des Betriebs verändert werden. Genauso gibt es eine Zeile mit Fehlermeldungen die variabel sein soll (vor allem in der Länge, da die Fehlermeldungen unterschiedlich lang sind).

    Warum machst du dir die (unnütze) Arbeit, das in C zu schreiben? In C++ wärst du damit viel schneller fertig 😉



  • _Hilfesuchender schrieb:

    die festen Parts die keine variablen Element enthalten könnte ich auch im Flash lagern - allerdings ist der Zugriff natürlich dann um einiges langsamer.

    Die variablen Elemente wie die SubnetMask können vom User während des Betriebs verändert werden. Genauso gibt es eine Zeile mit Fehlermeldungen die variabel sein soll (vor allem in der Länge, da die Fehlermeldungen unterschiedlich lang sind).

    ok. trotzdem reicht es doch, wenn du die seite nacheinander ausgibst, anstatt sie vorher zusammenzubauen?



  • Wie die Reihenfolge der Webseite im RAM ist, ist doch egal.
    Hauptsache die Reihenfolge der Ausgabe in den CGI Channel, in eine Datei etc. ist korrekt, oder?
    Guckst du:

    #include <stdio.h>
    
    void get_username ( char* buf )
    {
    	char* p;
    	do
    	{
    		printf ( "Name: " );
    		fgets ( buf, BUFSIZ+1, stdin );
    		p = strrchr ( buf, '\n' );
    		if (p)
    			*p = 0;
    	}while ( *buf == 0 );
    }
    
    void print_html ( char* title, char* username )
    {
    	printf ("<html><head><title>");
    	printf (title);
    	puts ("</title>");
    	puts("</head><body>");
    	printf ("Hello %s!\n", username );    		
    	puts("</body></html>");                                 
    }
    
    int main( )
    {
    	char* title = "This is an interactive website!";
    	char username[BUFSIZ+1];
    	get_username (username);
    	print_html (title, username);
    	return 0;	
    }
    

Anmelden zum Antworten