PDA

Visualizza la versione completa : [C++] Leggere da file e scrivere su vettore


giuseppep
12-07-2010, 20:54
Il programma prevedere l'acquisizione di un vettore di numeri interi da tastiera, e l'immissione in due file, pari.txt e dispari.txt.
Poi ho acquisito i dati dai due file in due vettori, da visualizzare a video.
Fino all'acquisizione dei dati nei file, il programma funziona correttamente.
Il problema relativo all' acquisizione nei vettori da file, tramite fscanf, che mi restituisce nei due file delle "f" e a video entra in un loop infinito.



#include<stdio.h>
#include <stdlib.h>
void carica_pari(FILE*,int*);
void carica_dispari(FILE*,int*);
int conta_p,conta_d;
void main()
{
int i,n,v[10],p[10],d[10];
i=0;
FILE *fpp,*fpd;
fpp=fopen("pari.txt","w+");
fpd=fopen("dispari.txt","w+");
do
{
printf("inserisci dim del vettore:\n");
scanf("%d",&n);}while(n<2||n>10);
printf("inserisci elementi del vettore:\n");
for(i=0;i<n;i++)
{
printf("inserisci elemento v[%d]=",i);
scanf("%d",&v[i]);
if(v[i]%2==0)
fprintf(fpp,"%d\n",v[i]);
else
fprintf(fpd,"%d\n",v[i]);

}

carica_pari(fpp,p);
carica_dispari(fpd,d);
fclose(fpp);
fclose(fpd);
printf("Gli elementi del vettore pari sono:\n");
for(i=0;i<conta_p;i++)
printf("p[%d]=%d",i,p[i]);
printf("Gli elementi del vettore dispari sono:\n");
for(i=0;i<conta_d;i++)
printf("d[%d]=%d",i,d[i]);
}


void carica_pari(FILE*fpp,int*p)
{
int i=0;
while(fscanf(fpp,"%d",&p[conta_p]) !=EOF)
conta_p++;

}
void carica_dispari(FILE*fpd,int*d)
{int i=0;
while(fscanf(fpd,"%d",&d[conta_d]) !=EOF)
conta_d++;

}

oregon
12-07-2010, 21:22
Dato che nelle funzioni carica_ passi a leggere un file che hai appena scritto, devi riposizionarti all'inizio con una rewind



void carica_pari(FILE*fpp,int*p)
{
int i=0;
rewind(fpp);
while(fscanf(fpp,"%d",&p[conta_p]) !=EOF)
conta_p++;

}
void carica_dispari(FILE*fpd,int*d)
{
int i=0;
rewind(fpd);
while(fscanf(fpd,"%d",&d[conta_d]) !=EOF)
conta_d++;

}

asuss
13-07-2010, 10:56
A cosa serve inserire la la libreria <stdlib.h>?

oregon
13-07-2010, 11:34
Originariamente inviato da asuss
A cosa serve inserire la la libreria <stdlib.h>?

stdlib.h non una libreria ma un semplice header

Loading