Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [c] Passare una array di struttura a funzione

    Come dice il titolo: come faccio a passare un array di struttura ad una funzione?
    Ho scritto questo codice ma non funziona.

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #define LUNGHEZZA_MASSIMA 25
    
    typedef struct{
    	char Cognome[LUNGHEZZA_MASSIMA+1], Nome[LUNGHEZZA_MASSIMA+1];
    	int Eta; 
    }Tipo;
    
    void mostra (struct array[], int i);
    
    int main(void)
    {  
    	Tipo DatiPersona[9999];	
    	int i = 0;
    	char c;
    	
    	FILE *fp;
    	fp = fopen("file.txt","r+");
    	
    	do{
    		fscanf(fp, "%s %s %d", DatiPersona[i].Cognome, DatiPersona[i].Nome, &DatiPersona[i].Eta);
    		i+=1;
    	} while((c = getc(fp)) != EOF);
    	
    	char codice;
    	for( ;; ){
    		printf("\n");
    		printf("Cosa desidera fare?\n");
    		printf("Vedere l'elenco(m)\n");");
    		printf("Esci (q)\n");
    		scanf("%c", &codice);
    		
    		while (getchar() != '\n');
    		switch (codice){
    			case 'm': mostra(DatiPersona[9999], i);
    				break;
    			case 'q': return 0;
    			default: printf("Codice errato\n");
    		}
    	}
    	
    	fclose(fp);
    
    }
    
    void mostra (struct array[], int i){
    	
    	int z;
    	char c;
    	
        printf("\n");	
    
    	for(z=0; z<i-1;z++){
    		printf("| %d | %s | %s | %-4d |\n",z+1, DatiPersona[z].Cognome, DatiPersona[z].Nome, DatiPersona[z].Eta);		
    	};
    }
    codice:
    ERRORI
    dati.c:12: error: array type has incomplete element type
    dati.c:12: warning: ‘struct array’ declared inside parameter list
    dati.c:12: warning: its scope is only this definition or declaration, which is probably not what you want
    dati.c:32:47: warning: missing terminating " character
    dati.c: In function ‘main’:
    dati.c:32: error: missing terminating " character
    dati.c:38: error: type of formal parameter 1 is incomplete
    dati.c: At top level:
    dati.c:49: error: array type has incomplete element type
    dati.c:49: warning: ‘struct array’ declared inside parameter list
    dati.c: In function ‘mostra’:
    dati.c:49: error: parameter name omitted
    dati.c:57: error: ‘DatiPersona’ undeclared (first use in this function)
    dati.c:57: error: (Each undeclared identifier is reported only once
    dati.c:57: error: for each function it appears in.)

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2011
    Messaggi
    156
    ma, guarda, non so se è lo stesso per il c, ma in pascal se vuoi usare un'array come parametro formale lo devi dichiarare con TYPE
    quindi non puoi fare

    vettore:array[1...5] of integer
    (dichiara la variabile vettore come un array)

    ....
    funzione(vettore)

    ma

    type
    vett=array[1...5] of integer
    (dichiara il tipo vett)
    var
    vettore:vett

    ....
    funzione(vettore)

  3. #3
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    hai scritto questo
    codice:
    typedef struct{
    	char Cognome[LUNGHEZZA_MASSIMA+1], Nome[LUNGHEZZA_MASSIMA+1];
    	int Eta; 
    }Tipo;
    
    void mostra (struct array[], int i);

    struct array[] non vuole dire niente che struttura si tratta ??

    devi mettere


    codice:
    void mostra (Tipo array[], int i);

    nella funzione mostra poi dovrai usare array non datipersona


    codice:
    void mostra (Tipo array[], int i){
    	
    	int z;
    	char c;
    	
        printf("\n");	
    
    	for(z=0; z<i-1;z++){
    		printf("| %d | %s | %s | %-4d |\n",z+1, array[z].Cognome, array[z].Nome, array[z].Eta);		
    	};
    }
    Tecnologia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.