zanna ha scritto:
Sembra vadi tutto bene però purtroppo il mio OS mi seganla un errore... come mai?? qualcuno sa aiutarmi?? Oppure se tolgo il controllo di NULL mi riesce a creare il file ma non ci scrive niente dentro e anche lasciando il controllo, mettiamo che ci si a un errore di apertura file comunque non mi scrive" errore apertura file"
Ringrazio in anticipo per la visione del post!!
Stefano.
Ciao,
riguardo alla condizione sull'apertura del file, proverei a spostare una delle due parentesi di chiusura prima del
==.
Poi credo che non sia consigliabile fare affidamento sul valore di
i all'uscita del ciclo for, ma dichiarerei una variabile a parte per contare le voci della rubrica.
Il codice diventerebbe in pratica così:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char nome [20];
char cognome [20];
char mail [30];
} utente;
int
main(void)
{
FILE *fp;
utente vet [100];
int i , k, b;
int how_much = 0;
printf("Benvenuto nel programma database che creera' un file .txt con i dati da te \\ninseriti\\n\\n");
for (i = 0; i < 100; i++) {
how_much++;
printf("\\nnome: ");
scanf("%s", vet[i].nome);
printf("\\ncognome: ");
scanf("%s", vet[i].cognome);
printf("\\nindirizzo email: ");
scanf("%s", vet[i].mail);
printf("\\nse vuoi continuare ad inserire dati premi 1 altrimenti 0\\n");
scanf("%d", &b);
if (b == 0)
break;
}
if ((fp = fopen("rubrica.txt", "w")) == NULL)
printf("\\nerrore di apertura del file");
else {
for (k = 0; k < how_much; k++)
fprintf(fp, "%s %s %s\\n", vet[k].nome, vet[k].cognome, vet[k].mail);
fclose(fp);
}
system("PAUSE");
return 0;
}