BorderGame

Versione completa: [C] Correttore di testi
Al momento stai visualizzando i contenuti in una versione ridotta. Visualizza la versione completa e formattata.
Cit System32 di Sciax2
Discussione presa da *****.it
Citazione:Salve, non avendo cosa fare ho cercato su google qualche suggerimento su che programma avrei potuto scrivo e per fortuna ne ho trovato uno. Il testo del programma ( trovato su un sito dove ci sono esercizi a livello universitario ) chiedeva di scrivere una funzione chiamata correggi che accetti come parametri il file in cui deve avvenire la correzione e il file che contiene quanto scritto nel primo file ma con le correzioni. Tale correzione deve essere applicata solo alle consonanti, ad esempio la parola tavvvolo deve essere corretta in tavolo. L'ho scritto e riscritto piĆ¹ volte questo programma ma alla fine CREDO di essere arrivato ad una soluzione corretta anche se un po' incasinata.
Codice:
#include "stdafx.h"
#include <ctype.h>
#include <conio.h>

int consonante(char car);
void correggi(char *input, char *output);

int main()
{
    char percorso[100];
    printf("Inserisci il percorso del file da correggere : ");
    scanf("%s", percorso);
    correggi(percorso, "C:\corretto.txt");
    getch();    
    return 0;
}

int consonante(char car)
{
    car = tolower(car);
    if((car > 'a') && (car <= 'z') && (car != 'e')  && (car != 'i') && (car != 'o') && (car !=  'u'))
        return 1;
    else
        return 0;
}

void correggi(char *input, char *output)
{
    FILE *file1, *file2;
    char x;
    signed char y;
    file1 = fopen(input, "r");
    file2 = fopen(output, "w");
    if((file1 == NULL) || (file2 == NULL))
    {
        perror("Impossibile aprire il file\n");
    }
    else
    {
        if((y = fgetc(file1)) != EOF)
            fputc(y, file2);

        while(fscanf(file1, "%c", &x) != EOF)
        {
            fprintf(file2, "%c", x);
            while((x == y) && consonante(x))
            {
                if(fscanf(file1, "%c", &x) == EOF)
                    break;
                if (x != y)
                    fprintf(file2, "%c", x);
            }
            y = x;
        }
        fclose(file1);
        fclose(file2);
    }
}
URL di riferimento