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

    [C] Comparazione stringhe

    ho bisogno di fare un programma in C che data in input una stringa(con una scanf) deve contare quante volte quella stringa è presente in un file il cui nome viene passato come parametro all'attivazione del processo (notare che la sequenza di caratteri 'ma' e' presente due volte nella parola 'mamma', ma la parola in cui 'ma' e'
    presente deve essere contata una sola volta).

    c'è qualcuno che può darmi una mano? :master:
    ---------------------------------
    Programmatore C

  2. #2
    Il programma è sotto linux...quindi deve contenere system call UNIX
    ---------------------------------
    Programmatore C

  3. #3

    Re: [C] Comparazione stringhe

    Originariamente inviato da Marco di Maio
    ho bisogno di fare un programma in C che data in input una stringa(con una scanf) deve contare quante volte quella stringa è presente in un file il cui nome viene passato come parametro all'attivazione del processo (notare che la sequenza di caratteri 'ma' e' presente due volte nella parola 'mamma', ma la parola in cui 'ma' e'
    presente deve essere contata una sola volta).

    c'è qualcuno che può darmi una mano? :master:
    Prova cosi' : una volta compilato il programma eseguilo dalla shell linux digitando
    ./nome_eseguibile nome_file.txt

    codice:
    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    
    int main(int argc, char *argv[]){
    
    char stringa[100];
    if ( (argc-1) != 1 ){
    printf("\nHai passato un numero errato di argomenti al programma,gliene devi passare uno soltanto....!\n\n");
    exit (1);
    }
    
    printf("Inserisci la stringa da ricercare nel file"\n);
    fgest(stringa,99,stdin); /* leggo con fgets la stringa invece che con scanf perchè pone in automatico il terminatore \0 oltre ad essere + "sicura" */
    
    FILE *f;
    if ( (f=fopen(argv[1],"r")) == NULL ){
    printf("\nImpossibile trovare il file da aprire\n");
    getchar();
    exit (1);
    }
    char c;
    int i=0,n=0,presente=0;
    
    while ( f != EOF ){
    c = fgetc(f);
     if (c == stringa[i]){
         n=0;
         for (i=i+1;i<strlen(stringa);i++){
         c = fgetc(f); 
          if ( c == stringa[i] ) n++;
         }
           if ( (n-1) == strlen(stringa) ) presente++;
     }
    i++;
    }
    
    printf("la stringà %s è presente %d volte nel file,vengono contate anche le ripetizioni xro'...tipo con la parola mamma!",stringa,presente);
    
    getchar();
    fclose(f);
    return 0;
    }
    fammi sapere...


    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  4. #4
    ok grazie... proverò e ti farò sapere :gren:
    ---------------------------------
    Programmatore C

  5. #5
    Originariamente inviato da Marco di Maio
    ok grazie... proverò e ti farò sapere :gren:
    :gren:



    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  6. #6
    che cos'è EOF?
    perchè argc-1?
    ---------------------------------
    Programmatore C

  7. #7
    Originariamente inviato da Marco di Maio
    che cos'è EOF?
    perchè argc-1?
    EOF indica la fine del file.(end of file)

    argc-1 perchè quando passi ad un programma degli argomenti da linea di comando,come in questo caso,il primo è rappresentato dal nome del programma.Quindi per controllare se viene passato un argomento(ossia il nome del file di testo con estensione da aprire successivamente in lettura)devo considerare argc-1

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    se uso la scanf è uguale ...perchè quella che hai usato tu non la conosco bene...!
    comunque grazie...posso chiederti un ultima cosa...Quello che ti ho dato era una parte dell'esercizio!
    l'altra parte dovrei saperla fare...certo se mi dai una mano anche su quella almeno per confrontare se faccio bene...che ne dici?
    Sono disperato...ho molti errori nella compilazione del mio esercizio completo!????? :master:
    ---------------------------------
    Programmatore C

  9. #9
    Originariamente inviato da Marco di Maio
    se uso la scanf è uguale ...perchè quella che hai usato tu non la conosco bene...!
    comunque grazie...posso chiederti un ultima cosa...Quello che ti ho dato era una parte dell'esercizio!
    l'altra parte dovrei saperla fare...certo se mi dai una mano anche su quella almeno per confrontare se faccio bene...che ne dici?
    Sono disperato...ho molti errori nella compilazione del mio esercizio completo!????? :master:
    non ti consiglio di utilizzare scanf per leggere stringhe e neanche il gets...usa il codice che ti ho postato sopra almeno impari cose nuove

    Per l'altra parte dell'es dimmi pure...se ne sono capace...

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #10
    io ho sempre usato la scanf...che differenza cè?
    tra un po ti do l'intero esercizio che devo fare... è da un po che ci sbatto la testa
    ---------------------------------
    Programmatore C

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 © 2025 vBulletin Solutions, Inc. All rights reserved.