Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-04-2007, 14:07   #1
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
[C] Funzione che da XHTML\HTML trasformi in TEXT: X\HTML2TEXT.

Qualcosa di efficiente, semplice e senza tanti fronzoli.

Googlando qualcosa si trova, ad esempio questo:
http://userpage.fu-berlin.de/~mbayer...html2text.html

, ma è troppo complicato e dispersivo.
Senza contare che ne MinWG ne CigWin riescono a terminare la compilazione.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 14:58   #2
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Prova questo:
http://www.nirsoft.net/utils/htmlastext.html

Dovrebbe andare anche da command line
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 15:22   #3
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Prova questo:
http://www.nirsoft.net/utils/htmlastext.html

Dovrebbe andare anche da command line
E' 1 freeware non open source.
Preferivo qualcosa che sia tipo 1 libreria da fare:
include "x-html2txt.c" nel mio Main.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 15:40   #4
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Chiedo a voi perchè magari qualcuno ci è già passato e perchè cercare tutte queste possibili keyword con attenzione è 1 po' ardua:
HTML2TXT, htmltotxt, html_to_txt, html_convert, txt_convert, HTML markup remover, html_tool.

... e poi tutto com la X innanzi.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 22-04-2007 alle 15:55.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 16:25   #5
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Neanche:
http://code.google.com/

trova qualcosa di "buono".
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2007, 21:33   #6
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
quello che ho trovato NON pulisce questa robaccia
Codice HTML:
<div class="feedflare">
<a href="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?a=BLH6Vx1e><img
src="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?i=BLH6Vx1e" border="0"></img></a>
<a href="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?a=Tifvjja7"><img
src="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?i=Tifvjja7" border="0"></img></a>
<a href="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?a=IHlNc3H8"><img
src="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?i=IHlNc3H8" border="0"></img></a>
<a href="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?a=MEhhYBSl"><img
src="http://feeds.wsjonline.com/~f/wsj/xml/rss/3_7011?i=MEhhYBSl" border="0"></img></a>
</div>
<img src="http://feeds.wsjonline.com/~r/wsj/xml/rss/3_7011/~4/110997774" height="1" width="1"/>
Ma che è 1 mix tra HTML ed XHTML?!
Non mi pare puramente nessuno dei 2.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2007, 17:51   #7
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Ho trovato la "funzione/programma" che leggerete a seguire.
Ma già nel "main" c'è qualcosa che non mi piace ed è questo:
Codice:
RBuffer = (char*) malloc( BUFFER_LEN );
   while( fgets( RBuffer, BUFFER_LEN, InFile ) != NULL ){
      dfConvert( RBuffer );
      fputs( RBuffer, OutFile );
   }// endwhile
   free( RBuffer );
fgets mi pare sia 1 funzione che legge al MAX quel tot_caratteri dopo di che si ferma.
Se il file è + lungo allora son cavoli e bisogna modificare la MACRO.
Giusto?!

Codice:
/*
 * HTML2TXT
 *
 * Copyright 2000 Matteo Baccan <mbaccan@planetisa.com>
 * www - http://www.infomedia.it/artic/Baccan
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
 * their web site at http://www.gnu.org/).
 *
 */

#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <io.h>

#define BUFFER_LEN   4096 // buffer lenght
#define CV_EXITPARA     1 // parameter error
#define CV_EXITOPEN     2 // open error
#define CV_EXITEXIST    3 // file exist

void dfPrintLogo(void);      // logo
void dfPrintInfo(void);      // parameter info
void dfPrintOpenError( const char * InFile ); // open error
void dfPrintExist( const char * OutFile );    // file Exist
void dfConvert( char * Buffer );  // convert string
int dfCheckChar( int iLen,
                 char *Buffer,
                 int iPointer,
                 char *Check,
                 int iCheckLen );

int main(int argc, char *argv[]) {
   FILE *InFile, *OutFile;     // file declaration
   char *RBuffer;              // Read Buffer

   if( argc < 3 ){                                 // check parameter
      dfPrintInfo();
      exit( CV_EXITPARA );
   }// endif

   dfPrintLogo();

   if( access( argv[2], 00 ) >= 0 ){               // file exist
      dfPrintExist( argv[2] );
      exit( CV_EXITEXIST );
   }// endif

   if( (InFile = fopen( argv[1], "r")) == NULL ){  // open file
      dfPrintOpenError( argv[1] );
      exit( CV_EXITOPEN );
   }// endif

   if( (OutFile = fopen( argv[2], "w")) == NULL ){ // create file
      dfPrintOpenError( argv[2] );
      exit( CV_EXITOPEN );
   }// endif

   printf("\n þ Reading %s\n", argv[1] );          // Convert

   RBuffer = (char*) malloc( BUFFER_LEN );
   while( fgets( RBuffer, BUFFER_LEN, InFile ) != NULL ){
      dfConvert( RBuffer );
      fputs( RBuffer, OutFile );
   }// endwhile
   free( RBuffer );

   printf("\n þ OK \n" );

   fclose( InFile );                               // Close File
   fclose( OutFile );
   return 0;

}// end of main


void dfPrintInfo(){
   printf("\n");
   printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");
   printf("³²±° HTML2TXT          Converter HTML  to TXT           Version  2.00 °±²³\n");
   printf("³²±° Copyright 1997-2000    The Wonderful Team    All Rights Reserved °±²³\n");
   printf("³²±° ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ °±²³\n");
   printf("³²±° Usage: HTML2TXT <InFile> <OutFile>                               °±²³\n");
   printf("³²±°                                                                  °±²³\n");
   printf("³²±° InFile  = File 2 convert into TXT                                °±²³\n");
   printf("³²±°                                                                  °±²³\n");
   printf("³²±° OutFile = File 2 save                                            °±²³\n");
   printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");
}// end of print info

void dfPrintLogo(){
   printf("\n");
   printf("ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n");
   printf("³²±° HTML2TXT          Converter HTML  to TXT           Version  2.00 °±²³\n");
   printf("³²±° Copyright 1997-2000    The Wonderful Team    All Rights Reserved °±²³\n");
   printf("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");
}// end of print logo


void dfPrintOpenError( const char * InFile ){
   printf("\n þ Error opening file %s\n", InFile );
}// end of print error


void dfPrintExist( const char * OutFile ){
   printf("\n þ Output file %s Exist \n", OutFile );
}// end of print Exist


void dfConvert( char * Buffer ){
   static int iStart=0;
   int  iPos,iPointer;
   int  iLen=strlen( Buffer );

   iPos=iPointer=0;
   while( iLen-->0 ){
      iPointer++;

      // BlockQuote
      if( dfCheckChar( iLen, Buffer, iPointer, "<BLOCKQUOTE>", 12 ) ){
          Buffer[iPos++]='"';
          iPointer+=11;
          continue;
      }
      if( dfCheckChar( iLen, Buffer, iPointer, "</BLOCKQUOTE>", 13 ) ){
          Buffer[iPos++]='"';
          iPointer+=12;
          continue;
      }

      // LineBreak
      if( dfCheckChar( iLen, Buffer, iPointer, "<BR>", 4 ) ){
          Buffer[iPos++]=0x0d;
          iPointer+=3;
          continue;
      }
      if( dfCheckChar( iLen, Buffer, iPointer, "</BR>", 5 ) ){
          Buffer[iPos++]=0x0d;
          iPointer+=4;
          continue;
      }

      // Citation
      if( dfCheckChar( iLen, Buffer, iPointer, "<CITE>", 6 ) ){
          Buffer[iPos++]='"';
          iPointer+=5;
          continue;
      }
      if( dfCheckChar( iLen, Buffer, iPointer, "</CITE>", 7 ) ){
          Buffer[iPos++]='"';
          iPointer+=6;
          continue;
      }

      // Tab
      if( dfCheckChar( iLen, Buffer, iPointer, "<TD>", 4 ) ){
          Buffer[iPos++]=9;
          iPointer+=3;
          continue;
      }
      if( dfCheckChar( iLen, Buffer, iPointer, "</TD>", 5 ) ){
          Buffer[iPos++]=9;
          iPointer+=4;
          continue;
      }

      // HTML Command Skipper
      if( Buffer[iPointer-1]=='<' ){
         if( Buffer[iPointer]!='\0' ){
            if( Buffer[iPointer]>='a' && Buffer[iPointer]<='z' ) iStart=1;
            if( Buffer[iPointer]>='A' && Buffer[iPointer]<='Z' ) iStart=1;
            if( Buffer[iPointer]=='!'                          ) iStart=1;
            if( Buffer[iPointer]=='/'                          ) iStart=1;
         }
      }
      if( Buffer[iPointer-1]=='>'&& iStart==1 ) {
         iStart=0;
         continue;
      }

      if( iStart==0 ){
         if( Buffer[iPointer-1]=='&' ){
            if( dfCheckChar( iLen, Buffer, iPointer, "&lt;"     , 4 ) ){ Buffer[iPos++]='<'; iPointer+=3; continue; } //4
            if( dfCheckChar( iLen, Buffer, iPointer, "&gt;"     , 4 ) ){ Buffer[iPos++]='>'; iPointer+=3; continue; } //4
            if( dfCheckChar( iLen, Buffer, iPointer, "&amp;"    , 5 ) ){ Buffer[iPos++]='&'; iPointer+=4; continue; } //5
            if( dfCheckChar( iLen, Buffer, iPointer, "&quot;"   , 6 ) ){ Buffer[iPos++]='"'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&Aacute;" , 8 ) ){ Buffer[iPos++]=' '; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Agrave;" , 8 ) ){ Buffer[iPos++]='…'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Acirc;"  , 7 ) ){ Buffer[iPos++]='ƒ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Atilde;" , 8 ) ){ Buffer[iPos++]='†'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Aring;"  , 7 ) ){ Buffer[iPos++]=''; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Auml;"   , 6 ) ){ Buffer[iPos++]='„'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&AElig;"  , 7 ) ){ Buffer[iPos++]='’'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ccedil;" , 8 ) ){ Buffer[iPos++]='‡'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Eacute;" , 8 ) ){ Buffer[iPos++]='‚'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Egrave;" , 8 ) ){ Buffer[iPos++]='Š'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ecirc;"  , 7 ) ){ Buffer[iPos++]='ˆ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Euml;"   , 6 ) ){ Buffer[iPos++]='‰'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&Iacute;" , 8 ) ){ Buffer[iPos++]='¡'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Igrave;" , 8 ) ){ Buffer[iPos++]=''; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Icirc;"  , 7 ) ){ Buffer[iPos++]='Œ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Iuml;"   , 6 ) ){ Buffer[iPos++]='‹'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&ETH;"    , 5 ) ){ Buffer[iPos++]='Ñ'; iPointer+=4; continue; } //5
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ntilde;" , 8 ) ){ Buffer[iPos++]='¤'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Oacute;" , 8 ) ){ Buffer[iPos++]='¢'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ograve;" , 8 ) ){ Buffer[iPos++]='•'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ocirc;"  , 7 ) ){ Buffer[iPos++]='“'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Otilde;" , 8 ) ){ Buffer[iPos++]='”'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ouml;"   , 6 ) ){ Buffer[iPos++]='”'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&Oslash;" , 8 ) ){ Buffer[iPos++]='0'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Uacute;" , 8 ) ){ Buffer[iPos++]='£'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ugrave;" , 8 ) ){ Buffer[iPos++]='—'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&Ucirc;"  , 7 ) ){ Buffer[iPos++]='–'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&Uuml;"   , 6 ) ){ Buffer[iPos++]=''; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&Yacute;" , 8 ) ){ Buffer[iPos++]='Y'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&THORN;"  , 7 ) ){ Buffer[iPos++]='è'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&szlig;"  , 7 ) ){ Buffer[iPos++]='á'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&aacute;" , 8 ) ){ Buffer[iPos++]=' '; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&agrave;" , 8 ) ){ Buffer[iPos++]='…'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&acirc;"  , 7 ) ){ Buffer[iPos++]='ƒ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&atilde;" , 8 ) ){ Buffer[iPos++]='†'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&aring;"  , 7 ) ){ Buffer[iPos++]=''; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&auml;"   , 6 ) ){ Buffer[iPos++]='„'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&aelig;"  , 7 ) ){ Buffer[iPos++]='‘'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&ccedil;" , 8 ) ){ Buffer[iPos++]='‡'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&eacute;" , 8 ) ){ Buffer[iPos++]='‚'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&egrave;" , 8 ) ){ Buffer[iPos++]='Š'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ecirc;"  , 7 ) ){ Buffer[iPos++]='ˆ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&euml;"   , 6 ) ){ Buffer[iPos++]='‰'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&iacute;" , 8 ) ){ Buffer[iPos++]='¡'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&igrave;" , 8 ) ){ Buffer[iPos++]=''; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&icirc;"  , 7 ) ){ Buffer[iPos++]='Œ'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&iuml;"   , 6 ) ){ Buffer[iPos++]='‹'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&eth;"    , 5 ) ){ Buffer[iPos++]='Ñ'; iPointer+=4; continue; } //5
            if( dfCheckChar( iLen, Buffer, iPointer, "&ntilde;" , 8 ) ){ Buffer[iPos++]='¤'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&oacute;" , 8 ) ){ Buffer[iPos++]='¢'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ograve;" , 8 ) ){ Buffer[iPos++]='•'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ocirc;"  , 7 ) ){ Buffer[iPos++]='“'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&otilde;" , 8 ) ){ Buffer[iPos++]='”'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ouml;"   , 6 ) ){ Buffer[iPos++]='”'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&oslash;" , 8 ) ){ Buffer[iPos++]='0'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&uacute;" , 8 ) ){ Buffer[iPos++]='£'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ugrave;" , 8 ) ){ Buffer[iPos++]='—'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&ucirc;"  , 7 ) ){ Buffer[iPos++]='–'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&uuml;"   , 6 ) ){ Buffer[iPos++]=''; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&yacute;" , 8 ) ){ Buffer[iPos++]='Y'; iPointer+=7; continue; } //8
            if( dfCheckChar( iLen, Buffer, iPointer, "&thorn;"  , 7 ) ){ Buffer[iPos++]='è'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&yuml;"   , 6 ) ){ Buffer[iPos++]='˜'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&reg;"    , 5 ) ){ Buffer[iPos++]='(';
                                                                         Buffer[iPos++]='r';
                                                                         Buffer[iPos++]=')'; iPointer+=4; continue; } //5
            if( dfCheckChar( iLen, Buffer, iPointer, "&copy;"   , 6 ) ){ Buffer[iPos++]='(';
                                                                         Buffer[iPos++]='c';
                                                                         Buffer[iPos++]=')'; iPointer+=5; continue; } //6
            if( dfCheckChar( iLen, Buffer, iPointer, "&trade;"  , 7 ) ){ Buffer[iPos++]='t';
                                                                         Buffer[iPos++]='m'; iPointer+=6; continue; } //7
            if( dfCheckChar( iLen, Buffer, iPointer, "&nbsp;"   , 6 ) ){ Buffer[iPos++]='	'; iPointer+=5; continue; } //6

            // &#number
            if( Buffer[iPointer]=='#' ){
               // May be a Number
               int nCount = 0;
               while( iLen-(nCount+1)>0              && // I have char?
                      Buffer[iPointer+1+nCount]>='0' && // Are number ?
                      Buffer[iPointer+1+nCount]<='9' ){
                  nCount++;
               }

               // If I have number .. try to cenvert it
               if( nCount>0 ){
                  int nDmm  = 0;
                  int nChar = 0;
                  int nMul  = 1;
                  while( nDmm<nCount ){
                     nChar += (Buffer[iPointer+nCount-nDmm]-48)*nMul;
                     printf( "%d\n", Buffer[iPointer+nCount-nDmm]-48 );
                     printf( "%d\n", nMul );
                     nMul  *= 10;
                     nDmm++;
                  }
                  if( nChar>0 ){
                     Buffer[iPos++]=nChar;
                     iPointer+=nDmm+1;
                     continue;
                  }
               }
            }
         }

         if( Buffer[iPointer-1]==0x0d &&
             Buffer[iPointer  ]==0x0d ){
             iPointer++;
             continue;
         }

         Buffer[iPos++]=Buffer[iPointer-1];
      }
   }
   Buffer[iPos++]='\0';
}

// convert string
int dfCheckChar( int iLen,
                 char *Buffer,
                 int iPointer,
                 char *Check,
                 int iCheckLen ){

   int iRet=0;
   if( iLen+1 >= iCheckLen ){
      iPointer--;
      while( *Check!='\0' ){
         if(  Buffer[iPointer]    ==*Check ||
             (Buffer[iPointer]|32)==*Check ){
           iPointer++;
           Check++;
         } else break;
      }
      iRet = (*Check==0 || *Check==13 || *Check==';' || *Check==' ');
   }

   return iRet;
}
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 23-04-2007 alle 18:14.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2007, 18:13   #8
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Ho accantonato quella perchè pensavo che la mia sia meglio, ma anche la mia s'impianta.

[NB]
Quello che segue è solo la parte che da problemi del mio programma.
Codice:
int crea_mod_file(char *infile, char *outfile)
{
FILE *fp_infile, *fp_outfile;
char a, *tmp_string, *new_string;
int i=0;

if((fp_infile = fopen(infile, "r")) == NULL)
    {
    printf("\nError opening file %s.\n", infile);
    return -1;
    }

if((fp_outfile = fopen(outfile, "w")) == NULL)
    { // create file
    printf("\nError opening file %s.\n", outfile);
    return -2;
    }

tmp_string=(char*) malloc(SIZEBUF);
memset(tmp_string, 0, SIZEBUF);

while((fgets(tmp_string, (SIZEBUF-1), fp_infile))!=NULL)
    {
    new_string=mod_escaped_html(tmp_string);
    fputs(new_string, fp_outfile);
    memset(tmp_string, 0, SIZEBUF);
    }

free(tmp_string);
fclose(fp_infile);
fclose(fp_outfile);
return 0;
}
/******************************/

/* Funzione che conforma i cartatteri di una stringa */
char *mod_escaped_html(char *tmp_buffer)
{
tmp_buffer = subst_string(tmp_buffer, "&lt;", "<");
tmp_buffer = subst_string(tmp_buffer, "&gt;", ">");
tmp_buffer = subst_string(tmp_buffer, "&nbsp;", " ");
tmp_buffer = subst_string(tmp_buffer, "&agrave;", "à");
tmp_buffer = subst_string(tmp_buffer, "&egrave;", "è");
tmp_buffer = subst_string(tmp_buffer, "&eacute;", "é");
tmp_buffer = subst_string(tmp_buffer, "&igrave;", "ì");
tmp_buffer = subst_string(tmp_buffer, "&ograve;", "ò");
tmp_buffer = subst_string(tmp_buffer, "&ugrave;", "ù");
tmp_buffer = subst_string(tmp_buffer, "&laquo;", "<");
tmp_buffer = subst_string(tmp_buffer, "&raquo;", ">");
tmp_buffer = subst_string(tmp_buffer, ">", ">");
tmp_buffer = subst_string(tmp_buffer, "&deg;", "°");
tmp_buffer = subst_string(tmp_buffer, "&amp;", "&");
tmp_buffer = subst_string(tmp_buffer, "&rsquo;", "'");
tmp_buffer = subst_string(tmp_buffer, "&apos;", "'");
tmp_buffer = subst_string(tmp_buffer, "&quot;", "\"");
return tmp_buffer;
}
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 24-04-2007 alle 10:33.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2007, 18:15   #9
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
:edit:

Apparentemente risolto.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.

Ultima modifica di Matrixbob : 23-04-2007 alle 19:02.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 08:41   #10
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Quote:
Originariamente inviato da Matrixbob Guarda i messaggi
...
fgets mi pare sia 1 funzione che legge al MAX quel tot_caratteri dopo di che si ferma.
Se il file è + lungo allora son cavoli e bisogna modificare la MACRO.
Giusto?!
...
Non mi pare, e' un ciclo, finche' non e' finito il file continua a leggere...
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 09:09   #11
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Non mi pare, e' un ciclo, finche' non e' finito il file continua a leggere...
Ma siamo sicuri che fgets legga 1 stringa e poi 1 altra e poi 1 altra?
Così non c'è il rischio di caricare 1/2 tag in memoria?!
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 09:23   #12
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Si', legge una stringa alla volta, ma e' inserito in un ciclo while,
legge finche' non e' != NULL
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 09:26   #13
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Si', legge una stringa alla volta, ma e' inserito in un ciclo while,
legge finche' non e' != NULL
Quindiha 1 puntatore di file alla stringa da leggere?
Io ho paura che li legga ogni volta la stessa stringa...
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 10:21   #14
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Ma scusa, compila e provalo, cosi' vedi se converte giusto...
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 10:23   #15
Matrixbob
Senior Member
 
L'Avatar di Matrixbob
 
Iscritto dal: Jul 2001
Messaggi: 9947
Quote:
Originariamente inviato da lovaz Guarda i messaggi
Ma scusa, compila e provalo, cosi' vedi se converte giusto...
Si converte, ma secondo me c'è la possibilità di prendere 1/2 TAG nel caso il "Signore" o il "tool" che ha fatto la pagina web non abbia dato il "\n" nei momenti opportuni, ma alla caz.
__________________
Aiuta la ricerca col tuo PC: >>Calcolo distribuito BOINC.Italy: unisciti anche tu<<
Più largo è il sorriso, più affilato è il coltello.
Matrixbob è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2007, 10:26   #16
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
E prova, dagli un html con un tag "proprio li'", intorno alla posizione 4096
lovaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Amazon distrugge i prezzi: TV OLED LG, i...
Trump studia dazi fino al 100% per sping...
ASUS Vivobook Go 15 in offerta su Amazon...
Occhio a questi Mini PC e tablet in offe...
La navicella Dragon di SpaceX ha modific...
Il Gruppo Volkswagen taglia la produzion...
Amazon sconta gli spazzolini Oral-B iO: ...
Metal Gear Solid: nuova Collection in ar...
Amazon lancia i pareggi NO IVA: maxi sco...
DAZN lancia una nuova promo per ex clien...
iPhone 17 supera il test di resistenza d...
Electronic Arts presto acquisita per 50 ...
Sierra Space: lo spazioplano Dream Chase...
Blue Origin mostra la schermatura per il...
ENEA promette pannelli solari più...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v