La visualizza con la struct fa capricci

di Anonimizzato17704 il
6 risposte
Nella visualizzza non mi esce nulla o meglio esce qualcosa di indecifrabbile e senza senzo,chiedo un aiuto, devo completare le atre funzioni ancora.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NMAX 150

typedef struct{
char cog[9]; //cognome
char nom[8]; // nome
char data[11]; // data di nascita
char prov[3]; // provincia
float quot; // quota
char pagato[3]; //pagato
}TVacanza;

void leggi(TVacanza v[], int *n);
void ordina (TVacanza v[], int n);
void statistica(TVacanza v[], int n);
float totale(TVacanza v[], int n);
void visualizza(TVacanza v[], int n);

int main() {
TVacanza v[NMAX];
int n=0;

leggi(v,&n);
ordina(v,n);
statistica(v,n);
totale(v,n);
visualizza(v,n);


}

void leggi(TVacanza v[], int *n){
int i;
char st[80];
char cognome[30], nome[40], datan[11], provincia[4], quota[9], pagat[6];

FILE *fp=fopen("elenco.txt","r");
fgets(st,80,fp);

i=0;
while(!feof(fp)){
fgets(st,80,fp);
sscanf(st,"%[^'|']|%[^'|']|%[^'|']|%[^'|']|%[^'|']|%[^'\n']\n",cognome,nome,datan,provincia,quota,pagat);
strcpy(v.cog, cognome);
strcpy(v.nom, nome);
strcpy(v.data, datan);
strcpy(v.prov, provincia);
v.quot=atof(quota);
strcpy(v.pagato, pagat);
i++;
}
*n=i;
fclose(fp);
}
void ordina(TVacanza v[], int n){
}

void statistica(TVacanza v[], int n){
}
float totale(TVacanza v[], int n){

}

void visualizza(TVacanza v[], int n){
int i;
for(i=0;i<n;i++);
printf("%2s",v.cog);
printf("%5s",v.nom);
printf("%12s",v.data);
printf("%12s",v.prov);
printf("%s",v[i].cog);
printf("%3.1f\n",v[i].quot);
printf("%s\n",v[i].pagato);
}

6 Risposte

  • Togli il ; dopo il for, altrimenti non viene eseguito nulla.. mi meraviglio che compili
  • Perché non dovrebbe compilare?
  • tuixte ha scritto:


    Togli il ; dopo il for, altrimenti non viene eseguito nulla.. mi meraviglio che compili
    In realtà il compilatore non si accorge di nulla visto che non ci sono errori, se non di logica, infatti, saranno eseguiti una sola volta tutti i printf al valore di i=n; producendo errori eventualmente in run-time.

    Dovresti aggiungere anche le graffe al for, per far eseguire tutto quel segmento di codice ad ogni iterazione.
  • Mi riferivo in realtà all'utilizzo del variabile i al di fuori del ciclo for, ma noto solo ora che Marc l'ha definita prima del ciclo, e non all'interno dello stesso. Chiedo venia
  • SVNiko ha scritto:


    tuixte ha scritto:


    Togli il ; dopo il for, altrimenti non viene eseguito nulla.. mi meraviglio che compili
    In realtà il compilatore non si accorge di nulla visto che non ci sono errori, se non di logica, infatti, saranno eseguiti una sola volta tutti i printf al valore di i=n; producendo errori eventualmente in run-time.

    Dovresti aggiungere anche le graffe al for, per far eseguire tutto quel segmento di codice ad ogni iterazione.
    Grazie SVNico non me n' ero proprio accorto grazie ancora.
  • Grazie a tutti per le risposte.
Devi accedere o registrarti per scrivere nel forum
6 risposte