Traccia d'esame

di il
26 risposte

26 Risposte - Pagina 2

  • Re: Traccia d'esame

    Ma la struttura Persona dove l'hai dichiarata?
  • Re: Traccia d'esame

    Non l'ho dichiarata. Pensavo che Persona persone[], passato come parametro, valesse come dichiarazione. Quindi devo scrivere così?
    void leggiFileProprietari(Persona persone[]){
    	FILE *fp;
    	int i=0;
    	Persona persone[];
    	
    	fp=fopen("proprietari.txt", "r");
    	if(fp==NULL){
    		printf("File inesistente!\n");
    		exit(0);
    	}
    	while(!foeof){
    		fscanf(fp, "%s", persone[i].codfisc);
    		fscanf(fp, "%s", persone[i].cognome);
    		fscanf(fp, "%s", persone[i].nome);
    		fscanf(fp, "%s", persone[i].dataNascita);
    		fscanf(fp, "%s", persone[i].luogoNascita);
    		fscanf(fp, "%s", persone[i].sol);
    		i++;
    	}
    }
  • Re: Traccia d'esame

    Non parlavo del parametro (fai molta confusione con i termini ...) ma della struttura ...

    Posta TUTTO il codice che stai utilizzando in modo che possa essere copiato e compilato.
  • Re: Traccia d'esame

    #include <stdio.h>
    #include <stdlib.h>
    
    
    typedef struct TPersona{
      char codfisc[16];
      char cognome[20];
      char nome[20];
      char dataNascita[11];	//considero la data nel formato gg/mm/aaaa
      char luogoNascita[30];
      NodoSoluzione *sol;	    
    }Persona;
    
    typedef struct TNodo{
       Persona dati;
       struct TNodo *next;     
    }Nodo;
    
    typedef struct{
    	char id[10];
    	char nomeAbitaz[30];
    	char via[30];
    	char comune[20];
    	int piano;
    	int nStanze;
    	int mq;
    	double valore;
    }Soluzione;
    
    typedef struct NSol{
    	Soluzione s;
    	struct NSol *next;
    }NodoSoluzione;
    
    void leggiFileProprietari(Persona persone[]){
    	FILE *fp;
    	int i=0;
    	Persona persone[];
    	
    	fp=fopen("proprietari.txt", "r");
    	if(fp==NULL){
    		printf("File inesistente!\n");
    		exit(0);
    	}
    	while(!foeof){
    		fscanf(fp, "%s", persone[i].codfisc);
    		fscanf(fp, "%s", persone[i].cognome);
    		fscanf(fp, "%s", persone[i].nome);
    		fscanf(fp, "%s", persone[i].dataNascita);
    		fscanf(fp, "%s", persone[i].luogoNascita);
    		fscanf(fp, "%s", persone[i].sol);
    		i++;
    	}
    }
    Questo è il codice
  • Re: Traccia d'esame

    Il codice deve essere
    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct {
    	char id[10];
    	char nomeAbitaz[30];
    	char via[30];
    	char comune[20];
    	int piano;
    	int nStanze;
    	int mq;
    	double valore;
    }Soluzione;
    
    typedef struct NSol {
    	Soluzione s;
    	struct NSol *next;
    }NodoSoluzione;
    
    
    typedef struct TPersona {
    	char codfisc[16];
    	char cognome[20];
    	char nome[20];
    	char dataNascita[11];   //considero la data nel formato gg/mm/aaaa
    	char luogoNascita[30];
    	NodoSoluzione *sol;
    }Persona;
    
    typedef struct TNodo {
    	Persona dati;
    	struct TNodo *next;
    }Nodo;
    
    
    void leggiFileProprietari(Persona persone[]) {
    	FILE *fp;
    	int i = 0;
    
    	fp = fopen("proprietari.txt", "r");
    	if (fp == NULL) {
    		printf("File inesistente!\n");
    		exit(0);
    	}
    	while (!feof(fp)) {
    		fscanf(fp, "%s", persone[i].codfisc);
    		fscanf(fp, "%s", persone[i].cognome);
    		fscanf(fp, "%s", persone[i].nome);
    		fscanf(fp, "%s", persone[i].dataNascita);
    		fscanf(fp, "%s", persone[i].luogoNascita);
    		persone[i].sol = NULL;
    		i++;
    	}
    }
    
    Ho corretto la feof (come l'avevi scritta?) e l'ordine dei typedef.

    Inoltre il puntatore sol deve essere posto a NULL inizialmente, non ha alcun senso fare l'input da file ...
  • Re: Traccia d'esame

    oregon ha scritto:


    Ho corretto la feof (come l'avevi scritta?)
    Cavolo! Pensavo di aver passato il parametro fp

    Comunque io scritto come lei mi ha detto (anche se ancora non mi è chiara la questione di "sol" ), ma dopo il puntino continua a non uscirmi nulla...
    Non capisco perchè.
  • Re: Traccia d'esame

    Impossibile ... anche perché se compili non hai errori.

    Hai provato a compilare? Quale compilatore usi?
  • Re: Traccia d'esame

    Utilizzo DevC.
    #include <stdio.h>
    #include <stdlib.h>
    
    
    typedef struct{
    	char id[10];
    	char nomeAbitaz[30];
    	char via[30];
    	char comune[20];
    	int piano;
    	int nStanze;
    	int mq;
    	double valore;
    }Soluzione;
    
    typedef struct NSol{
    	Soluzione s;
    	struct NSol *next;
    }NodoSoluzione;
    
    typedef struct TPersona{
      char codfisc[16];
      char cognome[20];
      char nome[20];
      char dataNascita[11];	
      char luogoNascita[30];
      NodoSoluzione *sol;	
    }Persona;
    
    typedef struct TNodo{
       Persona dati;
       struct TNodo *next;     
    }Nodo;
    
    int main(){
    	Nodo persone[10];
    	int dim, i;
    	
    	dim=leggiFileProprietari(persone);
    	
    	printf("Lista dei proprietari:\n");
    	for(i=0; i<dim; i++){
    		printf("%s", persone[i].dati);
    	}
    	
    	return 0;
    }
    
    int leggiFileProprietari(Persona persone[]){
    	FILE *fp;
    	int i=0;
    	
    	fp=fopen("proprietari.txt", "r");
    	if(fp==NULL){
    		printf("File inesistente!\n");
    		exit(0);
    	}
    	while(!foeof(fp)){
    		fscanf(fp, "%s", persone[i].codfisc);
    		fscanf(fp, "%s", persone[i].cognome);
    		fscanf(fp, "%s", persone[i].nome);
    		fscanf(fp, "%s", persone[i].dataNascita);
    		fscanf(fp, "%s", persone[i].luogoNascita);
    		persone[i].sol=NULL;
    		i++;
    	}
    	fclose(fp);
    	return i;
    }
    Mi dice "File non compilato!"
  • Re: Traccia d'esame

    Come mai?
  • Re: Traccia d'esame

    Guarda che la riga

    while (!foeof(fp)) {

    è ancora sbagliata ... e te l'avevo corretta !!
  • Re: Traccia d'esame

    oregon ha scritto:


    Guarda che la riga

    while (!foeof(fp)) {

    è ancora sbagliata ... e te l'avevo corretta !!
    Guardi che l'ho scritta come mi ha detto lei...
  • Re: Traccia d'esame

    No non mi pare.

    Se non sai cosa vuol dire feof puoi e devi leggere la documentazione.
    Se non vuoi leggerla almeno copia esattamente cosa ti viene suggerito.

    Comunque l'aiuto l'hai avuto ... il thread mi sembra completato e comunque non può diventare una chat o un corso privato ... Buon lavoro
Devi accedere o registrarti per scrivere nel forum
26 risposte