Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    [c] ricerca in un file txt

    Ciao a tutti ...

    Sono nuovo in questo forum e sono alle prime armi in programmazione

    come compilatore uso dev c/c++

    volevo sapere come si fa ad accedere in un file txt contenente stringhe

    e fare una ricerca su di esse

    esempio

    ho un file txt, ogni riga è una stringa da analizzare ...

    non so se sono stato chiaro comunque a me servono esempi pratici

    se sapete indicarmi dove li posso trovare ...

    accetto qualsiasi consiglio

    GRAZIE

    ciao

  2. #2
    codice:
    char* s = "";  /* Questa è la stringa dove viene caricata ogni riga */
    FILE* FileIn = fopen("TuoFile.txt","r");
    
    while(!feof(FileIn)) {
       fgets(s,1000,FileIn);  /* Leggi una riga intera, o meglio legge 1000 caratteri se nn trova prima il terminatore di riga \n */
       ...     /* Fai le tue operazioni sulla stringa */
    }
    Teoricamente dovrebbe andare...
    La luce è più veloce del suono,ecco xchè alcune persone sembrano brillanti fino a quando non parlano


  3. #3

    terminatore di riga?

    il terminatore di riga sarebbe INVIO e A CAPO nel file txt?

    oppure devo mettere qualche simbolo?

    Mi spiego meglio devo realizzare il seguente programma:

    “Sviluppare in linguaggio C# o in linguaggio C un indicizzatore di siti web”

    Lo scopo del programma è quello di indicizzare il contenuto di siti web ( elencati in un file di testo ).

    In particolare il programma dovrà:

    • Indicizzare un insieme di siti Web.
    • Permettere la ricerca veloce all’interno dei siti elencati per parole chiave ( vedi motori attuali, Google e affini).

    ....

    Io ho pensato di strutturare il file txt in modo da non complicarmi la vita:

    esempio ogni riga del file txt un NOME DI SITO WEB con una breve descrizione

    poi faccio tutte le mie ricerce sul file

    Sai per caso dove posso trovare una guida sulle ricerche su FILE ho provato ha scaricare qua e la , anche da html.it ma nessuna tratta specificamente i file ...

    Se puoi aiutarmi...

    GRAZIE

    CIAO

  4. #4
    codice:
    #include <string.h>
    #include <stdio.h>
    int main(){
    char* t= "termine da trovare";
    char* s = "";  /* Questa è la stringa dove viene caricata ogni riga */
    FILE* FileIn = fopen("TuoFile.txt","r");
    
    while(!feof(FileIn)) {
       fgets(s,1000,FileIn);  /* Leggi una riga intera, o meglio legge 1000 caratteri se nn trova prima il terminatore di riga \n */
    if (strstr(t,s))
       ...     /* Fai le tue operazioni sulla stringa */
    }
    strstr controlla se una stringa e' presente all' interno di un altra.
    P.S.
    cosi' accedi sequenzialmente il file e potrebbe rivelarsi dispendioso in termini di tempo...

    se vuoi ottimizzare i tempi dovresti organizzare
    il file in un archivio hash,oppure un archivio con indice e poi effettuare la ricerca nicotomica(bisezione)

    oppure se l'archivio e' ordinato utilizzare tecniche come le liste concatenate o gli alberi binari per velocizzare la ricerca.

  5. #5
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Per fare una ricerca sui file di testo potresti dare un'occhiata ai sorgenti del grep, che e' lo stato dell'arte della ricerca all'interno di file. Un po' difficilotti ma molto istruttivi.
    ChReAn
    -------------------

    Slackware 9.1 powered

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,301
    Originariamente inviato da kentaromiura
    effettuare la ricerca nicotomica
    Nicotomica? Una bella ricerca alla "Tenente Colombo" col sigaro in bocca!
    (sto scherzando, ovviamente!)


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Grazie dell'aiuto

    ciao a tutti

  8. #8

    ho provato ma non va ....

    Ho provato a compilare ed eseguire il seguente codice ma mi dice che il file progetto1.exe a causato un errore e sara terminato

    non so se ci sono errori nel codice oppure

    potete dare una controllatina?

    Grazie infinite


    CIAO A TUTTI



    codice:
    -----------------------------------------------------------------
    #include <string.h>
    #include <stdio.h>


    int main()

    {
    char* t= "case"; /*termine da trovare*/
    char* s = ""; /* Questa è la stringa dove viene caricata ogni riga */
    FILE* FileIn = fopen("siti.txt","r");

    while(!feof(FileIn))
    fgets(s,1000,FileIn); /* Leggi una riga intera, o meglio legge 1000 caratteri se nn trova prima il terminatore di riga \n */

    if (strstr(t,s))
    printf("ok \n");

    else
    printf("non trovato \n");


    }
    -----------------------------------------------------------------

  9. #9

    librerie?

    Dove si possono trovare le librerie e le funzioni che possono fare tutti i comandi e la sintassi da utilizzare?

    Nel compilatore?

    Grazie Ciao

  10. #10
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    codice:
    #include <string.h>
    #include <stdio.h>
    
    
    int main()
    
    {
      char* t= "case"; /*termine da trovare*/
      
      /* ATTENZIONE: la stringa da usare come buffer deve essere dimensionata alla dichiarazione, oppure tramite una malloc !!! */
      char s[255]; /* Questa è la stringa dove viene caricata ogni riga */
    
      FILE* FileIn;
    
      /* Controllo di errore su apertura file */
      if ((FileIn = fopen("siti.txt","r")) == NULL) {
        fprintf (stderr, "Errore nell'apertura del file\n");
        exit (1);
      }
    
      /* Vediamo di non inserire in s piu' caratteri di quanti ne possa contenere !!!
       Ad esempio qui avevi messo 1000, impensabile visto che non avevi specificato
      le dimensioni dell'array di char!
      */
      while(fgets(s,254,FileIn))
        /* Ultimi errori: 
           1) strstr (s1, s2) cerca s2 in s1 e non viceversa!!!
           2) strstr NON RESTITUISCE UN int! Restituisce un puntatore alla prima occorrenza di s2 in s1, quindi a tutti gli effetti e' simile a un right in VB
        */
        printf ("%s\n", strstr(s, t));
    }
    ChReAn
    -------------------

    Slackware 9.1 powered

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.