Contare stringhe su un file in c

di il
5 risposte

Contare stringhe su un file in c

Buon giorno,
vorrei proporvi questo problema:
ho bisogno di contare le città di ogni riga senza contare la prima, mi serve per contare il numero di elementi della lista di adiacenza di un grafo.

ad esempio:
ancona pesaro,90,100 pescara,150,130
bologna cesena,80,130 modena,45,90

la prima riga ha 2 elementi.

5 Risposte

  • Re: Contare stringhe su un file in c

    Cos'hai combinato fino ad adesso?
  • Re: Contare stringhe su un file in c

    ancona pesaro,90,100 pescara,150,130
    bologna cesena,80,130 modena,45,90
    il file è formattato cosi?
    città[spazio]città1,num,num[spazio]città2,num,num[spazio].....cittàN,num,num?
    se fosse cosi ad ogni spazio corrisponde una nuova città quindi con un for ti conti gli spazi ed è fatto
  • Re: Contare stringhe su un file in c

    Si lo avevo pensato pure io di contare gli spazi, oppure se poi dovessi aver problemi col estrarre i numeri corrispondenti alle città almeno mettere un carattere di riconoscimento...
    Comunque ho provato a farlo durante il conteggio delle righe del file... Solo che l'array mi risulta con tutti 0 e non capisco perchè...

    #include <stdio.h>
    #include <stdlib.h>


    int main (void)
    {

    int c, i, righe, spazi;
    FILE *file;
    int *a;

    righe=0;
    file = fopen("testo.txt", "r");

    a=(int *) calloc (1, sizeof(int));

    while (( c= getc(file)) !=EOF)
    {
    if (c == ' ')
    spazi++;

    if (c == '\n')
    {
    a[righe]=spazi;
    ++righe;
    spazi = 0;
    a= (int *) calloc (righe, sizeof(int));
    }

    }

    printf("%d", righe);
    for (i = 0; i < righe; i++)
    printf("%d", a);

    return (0);

    }
  • Re: Contare stringhe su un file in c

    Vedi realloc invece di calloc. il tuo array non cresce ma viene creato sempre da zero.
  • Re: Contare stringhe su un file in c

    Ok vi ringrazio ora mi funziona... eheheheh ho sbagliato una cavolata XD
    grazie ancora dell'aiuto!!
Devi accedere o registrarti per scrivere nel forum
5 risposte