progetto

progetto in C Marina (Uninettuno) Grazie
mail@pastecode.io avatar
unknown
c_cpp
3 years ago
2.3 kB
6
Indexable
Never
// Dato un file di testo contenente parole, chiedere all’utente il nome del file ed un secondo.
// Si scriva nel nuovo file tutto il contenuto del primo tranne una parola detta dall’utente.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAX 80

int main()
{
    FILE *fpin,*fpout;
    char file [FILENAME_MAX];
    char frase[MAX],riga[MAX];
    char riga_p[MAX];
    int l,l_frase,j,i,k,cont,trovata;

    printf("Nome del file da leggere ");
    gets (file);

    if ((fpin=fopen(file,"r"))==NULL)
    {
        fprintf (stderr,"Impossibile leggere il file %s",file);
        return EXIT_FAILURE;
    }

    printf("Nome del file da scrivere ");
    gets (file);

    if ((fpout=fopen(file,"w"))==NULL)
    {
        fprintf (stderr,"Impossibile leggere il file %s",file);
        return EXIT_FAILURE;
    }

    printf ("Parola da escludere ");
    gets (frase);

    l_frase=strlen(frase);


    while (fgets(riga,MAX,fpin)!= NULL)
    {

        if (strstr(frase,riga)!= NULL)
        {
            fputs (riga,fpout);
        }
        else {
        l=strlen(riga);
        j=0;
        trovata=0;
        cont=0;

        for (i=0;i<l-l_frase && trovata==0;i++)
        {

                if(riga[i]== frase[j])
                {
                    k=i;

                    for (j=0;j<l_frase && riga[k]==frase[j];j++)
                    {
                     cont++;
                     k++;
                     printf ("%c ",frase[j]);
                    }
                }
              if (j==l_frase)
                {

                    for (k=0;k<i;k++)
                    {

                        printf ("%c",riga[k]);
                        fputc (riga[k],fpout);

                    }

                    for (k=i;k<l-l_frase;k++)
                    {
                        printf ("%c",riga[k+l_frase]);
                        fputc (riga[k+l_frase],fpout);
                    }

                    trovata=1;
                    break;

                }

        }
            if (trovata==0)
            {
               fputs (riga,fpout);
            }
        }
    }

    return 0;
}