Array di stringhe

di Anonimizzato16189 il
22 risposte

22 Risposte - Pagina 2

  • Sì, infatti ti ho detti "a parte l'allineamento" ... ad esempio, se hai due strutture del tipo
    
    struct s1
    {
    	char c;
    	int i;
    };
    
    struct s2
    {
    	int i1;
    	int i2;
    };
    
    e l'allineamento è a 4 byte (32 bit), allora tutte e due le strutture avranno sizeof = 8, ovvero nella prima ci sarà il primo carattere utilizzato, tre caratteri non utilizzati e poi l'intero a 4 byte.

    Puoi cambiare l'allineamento fino ad utilizzare tutti i byte (ma facendo fare più lavoro alla CPU), con una iniziale
    
    #pragma pack(1)
    
    e in questo caso la prima sizeof sarà uguale a 5 e la seconda a 8
  • Main(void)95 ha scritto:


    Ho modificato la struct in:
    
    struct string
    {
         char nome[11];
    } persona[6];
    
    Non l'avevi detto, ma non te lo consiglio perché "string" è un termine che ti potrebbe servire in C++.

    In ogni caso, non capisco perché non utilizzi un array come

    char nomepersona[6][11];
  • Ah ok scusa se non l'avevo detto..
    Non uso la forma matriciale perché ci sono rimasto in mezzo.. Credevo che questa fosse più semplice della matrice, ma mi sa che mi sbaglio..
  • Gli avevo consigliato io di cambiarlo perchè indicava l'etichetta della struct con str e un vettore con str.

    La matrice è sicuramente la migliore scelta ma aveva scritto che voleva evitarla (forse vuole esercitarsi con le struct)
  • Ho provato a farla sotto forma di Matrice..
    Ho fatto come mi avete detto:
    
    char nomepersona[6][11];
    
    Però quando prelevo i dati dal file si salvi chi può.. Errori a non finire..
    
    int i = 0;
    while (fscanf( f, "%s", nomepersona[i][6])>0)
    {
        i++;
    }
    
    Perché dice che l'argomento è un int? Mentre la %s richiede un argomento di tipo char* ?
  • Sbagli perché non hai capito come funzionano le stringhe in C e perché usi fscanf,quando fgets è la funzione da usare.
  • Va bene grazie lo stesso di tutto.
  • Nomepersona)
Devi accedere o registrarti per scrivere nel forum
22 risposte