Risolto Stuct : uso operatore "."

Cingetorge

Utente Iron
22 Gennaio 2023
31
5
2
12
Prendendo in considerazione il seguente listato come posso scrivere/leggere i valori dei "campi" che cosituiscono la mia struttura senza ricorrere ai puntatori e senza la creazione in memoria dinamica ma solo utilizzando l'operatore "."?
C:
#include <stdio.h>

typedef struct {
char targa[16];
char marca[16];
}s;
//come fare arrei a[]
main(){
s a[2];
int i;

//for (i=0; i<2; i++) {
printf ("Automobile n.%d\n\n",i+1);
printf ("Inserisci la targa: ");
scanf ("%s",a.targa);
printf ("Inserisci la marca: ");
scanf ("%s",a.marca);
printf ("Inserisci il modello: ");
scanf ("%s",a.modello);
printf ("Inserisci l'anno di immatricolazione: ");
scanf ("%d",&a.anno);
//}
printf("marca:%s \n",a.marca);
}

Se provo a compilarlo il compilatore mi dice che il campo a e un puntatore mentre io vorrei accedere al campo come struttura. come potrei fare?grazie
 
L'unica cosa che ti manca è l'indice dell'array, era giusto mettere il for.
C:
for (i = 0; i < 2; i++) {
    printf("Automobile n.%d\n\n", i + 1);
    printf("Inserisci la targa: ");
    scanf("%s", a[i].targa);
    printf("Inserisci la marca: ");
    scanf("%s", a[i].marca);
    printf("Inserisci il modello: ");
    scanf("%s", a[i].modello);
    printf("Inserisci l'anno di immatricolazione: ");
    scanf("%d", &a[i].anno);
}
Ricordati di aggiungere modello e anno alla struct.
 
Ultima modifica:
Ciao St3ve,
a furia di modificare il listato sono sparite le variabili :)
A scopo didattico , se volessi creare e inizializzare una sola struct sempre c mi da il seguente errore alla riga ovev presente lo scanf,sempre senza ricorrere ai puntatori e senza la creazione in memoria dinamica ma solo utilizzando l'operatore ".", mi da il seguente errore:
" error: '( s *) &a ' is a pointer, did you mean to use '->' ' "
Perche l' operatore "&" nell'ultimo scanf ?
grazie
 
Sei sicuro di aver copiato bene il codice che ho postato? Le hai messe le parentesi quadre per indicizzare l'array? Se ti dovesse ancora dare errore ripostami tutto il codice.
 
no , il listato che hai scritto tu è ok .
L' errore mi appare se dovessi eliminare l'array ed il ciclo for , solo fine didattico, per inizializzare una sola struct. In tal caso mi esce l'errore sopra