PDA

Visualizza la versione completa : [C] Aprire file di testo in lettura da programma scritto con XCode


claus4
11-11-2017, 18:54
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");

oregon
11-11-2017, 19:15
Ciao Claudia,

hai un messaggio d'errore in esecuzione?

claus4
11-11-2017, 19:25
Ciao Claudia,

hai un messaggio d'errore in esecuzione?


No, mi stampa solo "Errore in apertura del file dati" e poi termina il programma

oregon
11-11-2017, 20:32
No, mi stampa solo "Errore in apertura del file dati" e poi termina il programma

Evidentemente hai sbagliato cartella perché non lo trova.

Ti consiglio di aprirlo in "w" per capire dove viene creato. In questo modo sai dove deve stare.

Loading