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++;
}