Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [c]: ricerca stringhe in un file di testo

    ciao ragazzi!
    ho un file di testo del tipo:

    "ciao
    io
    HELP
    sono
    una
    HELP
    prova"

    devo scrivere un programma che ricerchi la parola "HELP".
    sapreste farmi degli esempi pratici a riguardo?.
    io sono riuscita ad aprire il file a a fare il parsing...
    Grazie!!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [c]: ricerca stringhe in un file di testo

    Originariamente inviato da bucci.stefania
    io sono riuscita ad aprire il file a a fare il parsing...
    Hai già scritto del codice?? Postalo che vediamo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    ciao,
    ti scrivo il codice che ho fatto fino ad ora!!!


    myfunction(void){
    /*1- apro il file*/
    int result=1;

    FILE *fp;
    char buf[200];
    char *res;
    char str1[5];
    char str2[5];

    fp = fopen("/provaStef.txt","r");
    if( fp==NULL ){
    result=errno;
    exit(1);
    }
    else {
    result=2;
    }
    printf("parsing\n");
    /*parsing*/

    while(1){
    if(fgets(buf, 200, fp)==NULL){
    printf("finito\n");
    break;
    }
    else{
    printf("ok1, buf is %s",buf);

    printf("confronto\n");

    scanf("%s", str1);
    strcat(str1,"\n");
    printf("Stringa 1 \"%s\"\n", str1);
    printf("Stringa 2 \"%s\"\n", buf);
    if(strcmp( str1,buf)==0 )
    printf("uguali\n");
    else
    printf( "diverse\n");


    }
    }


    /*modifica*/

    fclose(fp);

    return result;
    /*2- ricerca delle righe da modificare*/
    /*3- modifica*/
    /*4- chiusura del file*/
    /*5- riavvio del servizio olsr*/
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da bucci.stefania
    ciao,
    ti scrivo il codice che ho fatto fino ad ora!!!
    A dire il vero il tuo sorgente è un po' confuso e mancano alcune cose, come la funzione main() e gli eventuali #include.

    Ecco una semplice base:
    codice:
    #include <stdio.h>
    
    int main (void)
    {
        FILE *fp;
        char  buf[256];
    
        if ((fp = fopen ("/provaStef.txt", "r")) != NULL)
        {
            while (fgets (buf, sizeof (buf), fp) != NULL)
            {
                /* ... fai quello che vuoi con buf ... */
            }
    
            fclose (fp);
        }
        else
            printf ("Errore apertura\n");
    
        return 0;
    }
    Se vuoi usare funzioni come strcmp, strcpy, ecc... devi includere <string.h>
    All'interno del ciclo while, ti basta eliminare innanzitutto il '\n' presente nel buffer (lo inserisce fgets) e poi cercare nella riga quello che ti serve.

    Quale sistema operativo e quale compilatore stai usando?? Giusto per sapere.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    scusa se il programma ti sembra incompleto ma quello che ti ho mandato è sola una piccola parte... ciò che tu mi chiedi già è stato fatto altrimenti come farei a capire se funziona o meno???.
    Grazie dell'esempio ma ancora non ho capito come devo fare per ricercare la parola help nel file.
    ho pensato alla funzione "strstr" secondo te potrebbe essere una buona strada?

  6. #6

    Uhm

    In pratica riprendendo il codice di AndBin

    Codice PHP:
    while (fgets (bufsizeof (buf), fp) != NULL)
            {
                
    /* ... fai quello che vuoi con buf ... */
            

    dove ce scritto "fai quello che vuoi" devi fare la tua ricerca. La prima cosa che mi viene in mente è una strcmp tra buf e HELP, del tipo

    if(!strcmp(buf,"HELP")) // la strcmp restituisce 0 se trova le stringhe uguali, se la memoria non
    printf("Trovato!") // inganna ovviamente

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Occhio solo al fatto che fgets inserisce nel buffer un '\n' (se la dimensione del buffer è sufficiente a contenere riga + '\n' + '\0')
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  8. #8
    Grazie!!!
    sono riuscita a risolvere il problema.
    ciao cia a presto

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.