Condividi:        

[C] problemi con strutture e puntatori

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Anthony47, Triumph Of Steel, archimede

[C] problemi con strutture e puntatori

Postdi Ciao3 » 22/08/12 01:27

Salve a tutti,
lascio le due domande alla fine del codice e vi ringrazio in anticipo se risponderete punto per punto. Apprezzo di più chi prova a correggere il codice scritto da me spiegandomi gli errori invece di darmi soluzioni alternative.

Sto provando a scrivere del codice in ambiente C/Linux tale che mi permetta di prendere in input da riga di comando una stringa del tipo:

Codice: Seleziona tutto
htmlget -D2 http://www.google.com/page1/page2.html
[tralascio la spiegazione di -D2 che al momento non è importante]

che mi separi il dominio da quello che segue creando due stringhe relative al dominio ed alla pagina web da inserire nei campi webdomain e webpage di una lista di 200 elementi di tipo struttura

Codice: Seleziona tutto
struct list
{
int link_number;
int link_depth;
char *webdomain;
char *webpage;
bool visited;
};


questa struttura è inserita in una libreria personalizzata di nome setup.h

Il codice del main scritto finora è questo:

Codice: Seleziona tutto
[...]
bool correct_webaddress;
char *domain_name;
char *page_name;
struct list result[200];  //ci sono 200 elementi ma non è uno spreco perché il programma farà altro

[...]

if(correct_webaddress)   //se si lancia come indicato prima qui si ha correct_webaddress = true
               {               
               domain_name = web_address_domain(argv[2]);   

               result[0].webdomain = domain_name;     //esaminare correttezza da qui in poi, prima ok

printf("%s\n\n\n", result[0].webdomain);
           
               while(domain_name[i] != '\0') //domain_name[i]
                     {
                     printf("%c", domain_name[i]);
                     i++;
                     }

               }


dove la funzione web_address_domain è una funzione definita in setup.h che fa correttamente il suo lavoro:

Codice: Seleziona tutto
char* web_address_domain (char *webstring)
{
      int w = conta_estensione_dominio(webstring);
      char domain_name[w];
      char *domain_name_Ptr;
     
      int i = 0; //scansiona webstring alla ricerca dello slash da cui parte la pagina
      int j = 0; //conta gli slash

      while(j != 1)
      {
           if(webstring[i] != '/')
             {
             domain_name[i] = webstring[i];
             printf("%c", domain_name[i]);
             i++;
             }
           else
             {
             domain_name[i] = '\0';   //il null a fine stringa
             printf("\n");
             j++;
             }
      }
 
      domain_name_Ptr = domain_name;

/* per fare più velocemente dei printf("%c") [funzionano entrambe]
//      puts(domain_name);
//      puts(domain_name_Ptr);
*/

      return domain_name_Ptr;
}


--


1) lanciando il codice così come indicato ottengo il seguente output:

www.google.com

www.goog�D3



http://www.goog�D3


mentre se commento la riga "printf("%s\n\n\n", result[0].webdomain);" ottengo l'output

www.google.com

www.google.com


come mai l'ultima stampa senza la printf commentata viene sbagliata? la stampa dei caratteri di domain_name[i] non dovrebbe risentire della stampa subito precedente di result[0].webdomain... non ho proprio idea del motivo...

2) è una mia impressione o è come se il campo result[0].webdomain ha uno spazio troppo corto incapace di memorizzare tutta la stringa "www.google.com"? all'inizio sembra ben avviato, poi escono quei simboli che non c'entrano niente... ho definito male qualcosa?
Ciao3
Utente Junior
 
Post: 40
Iscritto il: 31/07/09 15:05

Sponsor
 

Re: [C] problemi con strutture e puntatori

Postdi Ciao3 » 22/08/12 02:22

Non so perché ma adesso funziona e non ho cambiato proprio nulla! :aaah volevo cancellare definitivamente questo post per non far perdere tempo a chi mi avesse voluto rispondere ma non ci sono riuscito. Casomai pensateci voi e grazie cmq di questo spazio
Ciao3
Utente Junior
 
Post: 40
Iscritto il: 31/07/09 15:05


Torna a Programmazione


Topic correlati a "[C] problemi con strutture e puntatori":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti