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

    [C] Sosituzione stringa con stringa in newfile

    buonasera a tutti...ho una difficoltà il programma dovrebbe stampare un file in output
    ma mi stampa un output.txt bianco e dovrebbe copiare se trova la parola nel file1 dizionario.txt la corrispettiva parola in inglese sostituita al file 2.txt e stampare un terzo file.txt con, sia le parole della lista del file2 sia quelle sostituite nel file2 in inglese.
    grazie tante sono in difficoltà e il programma nn lavora come dovrebbe !
    Esempio di dizionario.txt
    anatra, duck
    cane, dog
    farfalla, butterfly
    gatto, cat
    leone, lion
    toro, bull
    Esempio di file di input
    lepre
    anatra
    koala
    giraffa
    leone
    cavallo
    ape
    cane

    Esempio di file di output prodotto (in inglese sono evidenziate le righe cambiate)
    lepre
    duck
    koala
    giraffa
    lion
    cavallo
    ape
    dog

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define MAXS 30
    #define DIZ "dizionario.txt"
    
    int main()
    {
        FILE*fp,*fpin,*fpout;
    
    
        char str[MAXS],str2[MAXS];
    
        char ita[MAXS],eng[MAXS],nome[MAXS];
    
        fp=fopen(DIZ,"r");
        if(fp==NULL)
        {
            printf("errore\n");
            return -1;
        }
    
        fpin=fopen("in.txt","r");
        if(fpin==NULL)
        {
            printf("errore\n");
            return -2;
        }
    
        fpout=fopen("ok.txt","w");
        if(fpin==NULL)
        {
            printf("errore\n");
           return -2;
        }
    
        while(fgets(str,MAXS,fp)!=NULL)
            sscanf(str,"%s %s",ita,eng);
                while(fgets(str2,MAXS,fpin)!=NULL  )
                    sscanf(str2,"%s",nome);{
                            if(strcmp(eng,nome)==0)
                {
                                 fprintf(fpout,"%s\n",eng);
                 }
                }
    
        fclose(fp);
        fclose(fpin);
        fclose(fpout);
        return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il primo ciclo while

    codice:
     while(fgets(str,MAXS,fp)!=NULL)
            sscanf(str,"%s %s",ita,eng);
    legge tutte le parole dal dizionario ma non le memorizza in due vettori come sarebbe necessario e quindi nelle due variabili troverai sempre le ultime due parole (quindi, così com'è, questo ciclo è inutile) ...

    Il secondo ciclo è indipendente dal prim (anche se tu l'hai scritto come se uno dipendesse dall'altro) e inizia quando termina il primo

    codice:
     while(fgets(str2,MAXS,fpin)!=NULL  )
            sscanf(str2,"%s",nome);
    e non fa altro che leggere tutto il file di input e mantenere nella variabile l'ultima parola (così com'è, anche questo ciclo è inutile) ...

    A questo punto rimane, per ultimo, il codice

    codice:
    {
       if(strcmp(eng,nome)==0)
       {
              fprintf(fpout,"%s\n",eng);
       }
    }
    che viene eseguito indipendentemente dai cicli precedenti e una sola volta. Essendo eng e nome gli ultimi dati letti dai due cicli predenti, non verrà soddisfatta mai e mai verrà scritto sul file in output.

    Devi rivedere tutto l'algoritmo che pensavi di adottare con quei cicli ... le correzioni non sono banali.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    ok grazie!! anche se comunque la mia intenzione era aprire il file leggerlo e aprire in conteporanea il secondo file se no come faccio a verificare se una parola vi è nell altro file? altrimenti demo memorizzarlo appunto in str1 e l altro in str2? grazieeee

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,310

    Moderazione

    Avevi già posto lo stesso problema in questa discussione: se ci sono sviluppi in seguito, in futuro continua la discussione che hai già aperto invece di crearne una nuova.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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.