Rubrica mail

di il
1 risposte

Rubrica mail

Ciao a tutti sono un nuovo utente di questo forum e aprofitto per salutare gli Admin e tutti gli Altri!!!

Volevo chiedervi aiuto su un semplice programma che non riesco a far funzionare:

Premetto che come OS utilizzo: Windows Xp
e come compilatore e programma utilicco Dev C++ 4.9.9.2

Questo è il sorgente:

#include <stdio.h>
#include <stdlib.h>

typedef struct {char nome[20];
char cognome[20];
char mail[30];
}utente;

main()
{
FILE *fp;
utente vet[100];
int i,k,b;

printf(\"Benvenuto nel programma database che creera' un file .txt con i dati da te \\ninseriti\\n\\n\");
for(i=0;i<100;i++)
{printf(\"\\nnome: \");
scanf(\"%s\",vet.nome);
printf(\"\\ncognome: \");
scanf(\"%s\",vet.cognome);
printf(\"\\nindirizzo email: \");
scanf(\"%s\",vet.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\");
for(k=0;k<i;k++)
fprintf(fp,\"\\n%s %s %s\",vet[k].nome,vet[k].cognome,vet[k].mail);

fclose(fp);

system(\"PAUSE\");
return 0;
}


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.

1 Risposte

  • Re: Rubrica mail

    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;
    }
    
Devi accedere o registrarti per scrivere nel forum
1 risposte