c, problemi con l'utilizzo di struct
Domanda
Sto provando a scrivere un programma che legge il testo da un file esterno (stringa stringa int, per riga). Struct è definito al di fuori della funzione principale:
typedef struct Person {
char fname[15];
char lname[20];
unsigned long int birth;
} clovek;
Non ho bisogno di " clovek " per essere un array come con ogni linea i dati possono essere sovrascritti. La linea è rossa per il buffer con:
fgets(buffer, 50, datafile);
Quindi voglio analizzarlo alla struttura ma è qui che sorge il mio problema:
int i = 0;
while (buffer[i] != ' ') {
clovek.fname[i] = buffer[i];
i++;
}
E questo mi dà un errore: identificatore previsto o token '(' before '.'
Volevo anche usare questo codice per il debug ma dà anche un altro errore:
printf("fname, %s\n", clovek.fname);
errore: espressione prevista prima di 'clovek'
La mia ipotesi è che ho completamente frainteso l'uso di struct.
Soluzione
clovek
è un alias per struct Person
. Rimuovi la parola chiave typedef
o crea un oggetto di tipo struct Person
da qualche parte nel tuo codice. Con il presente codice puoi fare:
clovek someone;
while (buffer[ i ] ) != ' ') {
someone.fname[ i ] = buffer[ i ];
/* .. */
Altri suggerimenti
La tua dichiarazione definisce clovek come alias della struttura Person.
Rimuovi " typedef " dalla dichiarazione. In questo modo, clovek diventa una variabile di tipo Person:
O ancora meglio, separare la dichiarazione struct dalla dichiarazione variabile:
struct Person {
char fname[15];
char lname[20];
unsigned long int birth;
};
struct Person clovek;