Salve a tutti! Sono nuova sul form e ho iniziato da poco a lavorare con Ubuntu.. Sto riscontrando alcuni problemi con la lettura file. Riesco a compilarlo senza errori,ma puntualmente non riesco a stampare a video niente,se non zero. E mi succede per tutti gli esercizi che faccio: niente errori di sintassi magari, ma qualsiasi sia la richiesta Ubuntu stampa a video 0. Potreste aiutarmi perfavore?Inserisco solo alcuni punti

include <stdio.h>

include <stdlib.h>

include <string.h>

define MAXD 1024

define MAX 20

define DIM 2

struct studio { char tipo_fase[MAX]; int minuto_inizio;
}; //----LETTURA FILE------

struct studio leggiFile(char path,int l) { struct studio r; FILE *f; int i=0; int k=1; char buffer[MAXD];

    r=malloc(k*DIM*sizeof(struct studio));
    if (r==NULL) {
        puts("Errore allocazione memoria");
        return 0;
    }

    f=fopen("esempio.txt","r");
    if (f==NULL) {
        puts("Errore apertura file!");
        return 0;
    }

    while (fgets(buffer,sizeof(buffer),f)!=NULL){
        sscanf(buffer,"%s %d",r[i].tipo_fase,&r[i].minuto_inizio);
        i++;
        if (i>=k*DIM){
            k++;
            r=realloc(r,DIM*k*sizeof(struct studio));
            if (r==NULL) {
                puts("Errore prima allocazione");
                return 0;
                }
            }
        }
    r=realloc(r,i*sizeof(struct studio));
    if (r==NULL) {
        puts("Errore seconda allocazione");
        return 0;
    }
    return r;
    *l=i;
    fclose(f);
    }
//---STAMPA RIGHE----
void StampaRighe (struct studio *r,int l) {
puts("[RIGHE]");
    int i;
    for (i=0;i<l;i++) {
        printf("%s %d",r[i].tipo_fase,r[i].minuto_inizio);
    }
}
//PUNTO 2--------
void Sessioni(struct studio *r,int l){
    int i;
    int conto=0;

    for (i=0;i<l;i++) {
        if (r[i].tipo_fase=="end"){
            conto++;
        }
    }
    puts("[NUMERO SESSIONI E DURATA]");

    for (i=0;i<l;i++) {
        if (r[i].tipo_fase=="end"){
            printf("%d %d\n", conto,r[i].minuto_inizio) ;
            }
        }

}

//------PUNTO 3-----void MainSleep(struct studio *r,int l){ int i;

//considero main sleep la prima sessione ,controllo la prima e la prima dopo l'end
    puts("[MAIN_SLEEP]");
    for (i=0;i<l;i++) {
        if (r[i].tipo_fase=="end" ) {
            printf("%d", r[i+1].minuto_inizio); 
        } printf("%d",r[0].minuto_inizio);
        }
    }

//----- FUNZIONE MAIN-----

int main(int argc,char **argv) {
    struct studio *r;
    int l;

if (argc>2) {
    puts("Errore passaggio parametri!");
    return 0;
}

leggiFile(argv[1],&l);

StampaRighe(r,l);

puts("[RIGHE]");
printf("%d",l);

Sessioni(r,l);
MainSleep(r,l);

free(r);
return 0;
}

chiesto 30 Jan '21, 00:52

ritarlnd's gravatar image

ritarlnd
2012

Grazie mille 🙏

(30 Jan '21, 10:32) ritarlnd ritarlnd's gravatar image
Scrivi tu la prima risposta!
abilita/disabilita anteprima

Segui questa domanda

Via email:

Una volta eseguito l'accesso potrai iscriverti a tutti gli aggiornamenti qui

Via RSS:

Risposte

Risposte e commenti

Basi di markdown

  • *corsivo* o __corsivo__
  • **grassetto** o __grassetto__
  • collegamento:[testo](http://url.com/ "titolo")
  • immagine?![alt testo](/path/img.jpg "titolo")
  • elenco numerato: 1. Foo 2. Bar
  • per aggiungere un'interruzione di riga, aggiungi due spazi a fine riga e premi «Invio»
  • è supportato anche semplice HTML

Tag:

×82

domanda posta: 30 Jan '21, 00:52

domanda visualizzata: 318 volte

ultimo aggiornamento: 30 Jan '21, 10:32

Chiedi è un servizio di supporto gestito da Ubuntu-it. Contattaci!

powered by OSQAPostgreSQL database
Ubuntu e Canonical sono marchi registrati da Canonical Ltd.