PROBLEMA Dubbio struttura in linguaggio C (esercizio Liste) che rappresenta una data

saro1995

Nuovo Utente
82
3
Ciao a tutti ragazzi!
Sto studiando le liste per affrontare un esame di programmazione in linguaggio C;
Devo scrivere una struttura che all'interno contiene una stringa nel formato anno-mese-giorno.
Il problema successivo è leggere da file una data, non ho una possibile soluzione a riguardo.
Non so come proseguire con l'esercizio, ovvero, non so come gestire una data in formato stringa all'interno di una struttura. Di solito negli altri esercizi senza struttura faccio così:

C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    char data[16];
    int giorno, mese, anno;
    printf("Inserisci una data: ");
    scanf("%16s", data);
    if (sscanf(data, "%d/%d/%d", &giorno, &mese, &anno) != 3) {
        printf("Errore: La data inserita non e' valida.\n");
        exit(1);
    }
    printf("Giorno: %d\n", giorno);
    printf("Mese: %d\n", mese);
    printf("Anno: %d\n", anno);

    return 0;
}
//questa è la struttura dati richiesta dall'esercizio
[CODE=C]
ypedef struct Iscritto {
    char cognome[15];
    char data_nascita[20];
    int giorno, mese, anno;
    int numero_turno;
}TIscritto;

typedef struct NodoIscritto {
    TIscritto info;
    struct NodoIscritto *next;

}TNodoIscritto;
typedef TNodoIscritto* TListaIscritti;

typedef struct Turno {
    int numero_turno;
    int numero_iscritti;
    TListaIscritti elenco_iscritti;
}STurno;

typedef struct NodoTurno {
    STurno info;
    struct NodoTurno *next;
}TNodoTurno;
typedef TNodoTurno* TListaTurni;
 

saro1995

Nuovo Utente
82
3
il file è organizzato in questo modo:
Esempio di file:
Rossi 1980-12-11 3
Ferrari 1975-06-15 1
Esposito 1990-10-27 2
Bianchi 1965-09-01 2
Romano 1992-11-15 4
Marino 1985-02-15 5

Invece la struttura iniziale della lista è questa:
Specifica della struttura dati:
Iscritto:
1.
Cognome
(stringa di 15 caratteri)
2.
Data di nascita (stringa nel formato anno-mese-giorno)
3.
Numero Turno (numero intero)
Turno:
1.
Numero turno
(numero intero)
2.
Numero di iscritti (numero intero)
3.
Elenco degli iscritti (lista di Iscritto)
 

Sysken

Nuovo Utente
51
20
Allora, nel file la data è già nel formato richiesto, quindi basta leggerla mediante fscanf e salvarla in data_nascita[20]. Potresti utilizzare un while che scorre fino al carattere di eof.
C:
#include <stdio.h>

while(!(feof(puntatore_alFile)){
// Allocazione dinamica di un nuovo nodo
...
    fscanf(parametri); // leggo il cognome
    fscanf(parametri); // leggo la data di nascita
    sscanf(nome_nuovoNodo->data_nascita, "%d-%d-%d", &anno, &mese, &giorno);
    fscanf(parametri); // leggo il numero di turno
}

I 3 fscanf leggeranno una riga per volta.
 
Ultima modifica:

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili