Stampa a video soli zeri
Inviato: sabato 30 gennaio 2021, 10:34
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.tipo_fase,&r.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.tipo_fase,r.minuto_inizio);
}
}
//PUNTO 2--------
void Sessioni(struct studio *r,int l){
int i;
int conto=0;
for (i=0;i<l;i++) {
if (r.tipo_fase=="end"){
conto++;
}
}
puts("[NUMERO SESSIONI E DURATA]");
for (i=0;i<l;i++) {
if (r.tipo_fase=="end"){
printf("%d %d\n", conto,r.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.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;
}
#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.tipo_fase,&r.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.tipo_fase,r.minuto_inizio);
}
}
//PUNTO 2--------
void Sessioni(struct studio *r,int l){
int i;
int conto=0;
for (i=0;i<l;i++) {
if (r.tipo_fase=="end"){
conto++;
}
}
puts("[NUMERO SESSIONI E DURATA]");
for (i=0;i<l;i++) {
if (r.tipo_fase=="end"){
printf("%d %d\n", conto,r.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.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;
}