Aiuto in c

di il
2 risposte

Aiuto in c

Salve a tutti, io dovrei fare un programmino in c che legga come input un file.txt che ad esempio sia fatto così:

0123#56789
#123456789
01234#6789
0 * 2 3
0 1 2 *
0 1 @ 3
0 * 2 3
: 1 2 3
# 1 2 3

e produca come output un altro file txt con i numeri mancanti, ad esempio:
matricola risposte
4 0 5 1 3 2 1 0 0

Siccome nn sono un grande programmatore, se mi poteste dare una mano mi salvereste.Grazie in anticipo dello sbattimento

2 Risposte

  • Re: Aiuto in c

    Non saprei...solo solo che esiste una funziona (fopen se non erro) che legge i file di testo!

    - ianaz -
  • Re: Aiuto in c

    Ciao
    scusa la risposta in notevole ritardo, ma ho scoperto da poco questo forum ed ho visto la timidezza da meno ancora. Spero che la risposta NON ti serva piu' :)

    La cosa migliore da fare e' leggere il file riga per riga:

    FILE *f;

    f = fopen ("nome file", "rt"); // il flag t e' necessario solo su alcune piattaforme
    if (f == NULL)
    {
    // Riporta un messaggio di errore
    }

    while (fgets(linea, MAX_LINE, f) != NULL)
    {
    // Qui puoi elaborare la tua linea
    }
    fclose (f);

    Questo ciclo, quindi, leggera' linea per linea fino al raggiungimento dell'EOF. In tal caso uscira' e dovrai chiudere il file.
    All'interno del ciclo, nella variabile linea ci sara' la riga letta.

    Per riportarsi ad un caso semplice, potresti scrivere una piccola procedura che, data la stringa di partenza, ti ritorna la medesima privata degli spazi. Chiamiamola, anche se non appropriato, "trim"

    // Nota - le stringhe devono essere allocate correttamente
    void trim (char *in, char *out)
    {
    while (*in)
    {
    if (!isspace(*in))
    *out++ = *in;
    in++;
    }
    *out = '\0';
    }

    All'interno del tuo ciclo potrai quindi chiamare questa procedura, ottenendo di lavorare con stringhe private degli spazi.

    A questo punto, puoi fare una piccola funzione che riporta l'indice del primo carattere diverso da un numero, o -1 se non trovato:

    int getNotDigit (char *str)
    {
    int count = 0;
    while (isdigit(*str++))
    {
    count++;
    }
    return (*str == '\0') ? -1 : count;
    }

    alla fine, stampi questo valore

    ciao ciao

    "Beati i giusti perche' saranno giustiziati"
Devi accedere o registrarti per scrivere nel forum
2 risposte