Sono una studentessa universitaria e ho riscontrato il seguente problema nel programmare in c con un mac.
Ho scritto un programma che a un certo punto richiedeva di leggere un file (.txt) pre esistente che ho inserito nella stessa directory del progetto Xcode. Il problema è che, in fase di esecuzione, non legge nulla e termina il programma, come faccio?
Questo è il programma fino a dove ho riscontrato il problema:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday}days;
typedefstruct {
int nomcent;
float temp, umidita, polveri;
int giorno;
int mese;
int anno;
days day;
}centralina;
centralina *dati[10];
int leggidati()
{ centralina *p;
FILE *f;
char nomgiorno[10];
int i=0;
f=fopen("Prova 3- Dati.txt", "r");
if (f==NULL)
{
printf("Errore in apertura del file dati\n");
return 0;
}
while (!feof(f))
{
p=malloc(sizeof(centralina));
fscanf(f, "%d %f %f %f %d %d %d %s", &(p->nomcent), &(p->temp), &(p->umidita), &(p->polveri), &(p->giorno), &(p->mese), &(p->anno), nomgiorno);
i=p->nomcent-1;
if (dati[i]==NULL)
{if ( strcmp(nomgiorno,"Sunday")==0)
p->day=Sunday;
else
if (strcmp(nomgiorno, "Monday")==0)
p->day=Monday;
else
if (strcmp(nomgiorno, "Tuesday")==0)
p->day=Tuesday;
else
if (strcmp(nomgiorno, "Wednesday")==0)
p->day=Wednesday;
else
if (strcmp(nomgiorno, "Thursday")==0)
p->day=Thursday;
else
if (strcmp(nomgiorno, "Friday")==0)
p->day=Friday;
else
if (strcmp(nomgiorno, "Saturday")==0)
p->day=Saturday;
else printf("Hai inserito il dato sbagliato\n");
dati [i]=p;}
else printf("Errore: %d %f %f %f %d %d %d %s ", (p->nomcent), (p->temp), (p->umidita), (p->polveri), (p->giorno), (p->mese), (p->anno), nomgiorno);
}
fclose(f);
return1;
}
int main(int argc, const char** argv)
{
int i;
FILE *o;
for (i=0; i<10; i++)
dati[i]=NULL;
if (leggidati()==0)
return 0;
o=fopen("RiggioClaudia10573137.txt", "w");