Problema loop e fgets/fscanf

di Anonimizzato14817 il
5 risposte
Buonasera a tutti.
Sono uno studente che attualmente sta studiando il C.
Sto facendo un programma che devo consegnare a lezione e sono bloccato su un problema.
Vi spiego a grandi linee il progetto. Ho un file .txt in cui ci sono alcuni carattere che devo scambiare con parole riposte in un altro file(file2). Nell' ultimo file, le parole sono messe sotto forma di elenco.
Ora vi espongo il mio problema. Per essere chiaro vi scrivo il pezzo di codice in cui sono bloccato:
 
            while((fscanf(file2,"%d %s",&numero,parola)!=EOF)
            {
                if(numero==confrontonumero)
                {
                 fprintf(output,"%s",parola);
                }
            }
        }
P.s.: prima di questo ciclo while, ce n'è un altro che però ho omesso.
Ho notato che nell' output viene copiata soltanto la prima parola. Ho fatto qualche esperimento e ho scoperto che ogni qualvolta il puntatore nel file (quello che segna i caratteri) arriva all'EOF, poi non torna più su.
Datemi qualche consiglio con una spiegazione per capire l'errore.
Vi ringrazio anticipatamente del vostro aiuto.

5 Risposte

  • Scusa, ma non si è capito molto ...

    Mostra il contenuto del file che leggi, quello delle variabili, la loro dichiarazione, dicci cosa succede nel file di destinazione ...
  • Il file che leggo è un testo normale, mentre il file2 è un elenco. Nel file di destinazione esce la prima parola da tradurre e basta. Le successive rimangono con uno spazio.
    Non chiedermi scusa, anzi dovresti insultarmi per essermi spiegato male.
    Io voglio che il puntatore dentro al file2 torni in cima alla fine di ogni ciclo.
  • Se ho capito bene, allora devi usare la fseek ... oppure chiudi e riapri il file.
  • Utilizzando fseek dovrei scrivere: fseek(file2,0,0)?
  • E' più elegante scrivere

    fseek ( file2 , 0 , SEEK_SET );

    ... comunque, fai prima a provare.
Devi accedere o registrarti per scrivere nel forum
5 risposte