Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [C] - Lettura da file

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    61

    [C] - Lettura da file

    Ciao a tutti.

    Sono alle prime esperienze in C e mi sono bloccato su di una questione apparentemente semplice...( )

    Voglio leggere un file di testo e copiare da questo le "parole"(dove per parole intendo solo le stringhe costituite esclusivamente da caratteri alfabetici)in un vettore, per poi mandare in stampa a video tali parole.

    Il codice che ho scritto è:

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

    #define Max_Word_Length 20
    #define Max_Text_Length 1000

    void main(void)
    {
    char *testo[Max_Text_Length], parola[Max_Word_Length], c;
    int i, indiceScrittura=0, indiceParola=0;
    FILE *fp;
    fp=fopen("\\prova.txt","r");
    if(fp!=NULL)
    {
    while((c=(char)fgetc(fp))!= EOF)
    if((c>='A' && c<='Z') || (c>='a' && c<='z'))
    {
    parola[indiceParola]=c;
    indiceParola++;
    }
    else
    if(indiceParola!=0)
    {
    testo[indiceScrittura]=parola;
    indiceScrittura++;
    indiceParola=0;
    }
    fclose(fp);
    for(i=0;i<indiceScrittura;i++)
    printf("%s\n ",testo[i]);
    printf("\n\n");
    }
    else
    printf("Il file non esiste\n");
    system("Pause");
    }

    ma, visto l'output prodotto, evidentemente non è esatto.

    Qualcuno saprebbe indicarmi cosa sbaglio??

    Grazie a tutti per l'aiuto...

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    il problema è qui:

    testo[indiceScrittura]=parola;

    esempio:
    in testo[0] viene memorizzato l'indirizzo del vettore parola;
    in testo[1] viene memorizzato l'indirizzo del vettore parola;

    quindi testo[0] e testo[1] sono la stessa cosa ossia puntano alla stessa locazione di memoria dove c'è parola.

    in parola c'è sempre l'ultima sequenza di caratteri trovata quindi qualsiasi posizione di testo punta alla stessa "frase".....

    ci penso e ti dico la soluzione,...,non è banale se si vuole mantenere una complessità del codice bassa.....


    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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2002
    Messaggi
    61
    Infatti, l'out è proprio l'ultima parola ripetuta tante volte...
    Se ci riesci fammi sapere.
    Grazie

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.