Salve, sto realizzando questo programma, e non so perchè il ciclo che ho segnato nel codice viene eseguito una sola volta, come posso risolvere? Grazie.
#include <stdio.h>
#include <stdlib.h>
void LeggereFile(FILE **fp);
void LeggereVettoreADaFile(FILE *fp, int *vettoreA);
int ContaElementiFile(FILE *fp);
void AllocareVettoreA(int *vettoreA, int dim);
void ScrivereElementoInVettoreA(int i, int j, int vettoreA[]);
int main(void){
FILE *fp;
int *vettoreA = NULL;
//int *vettoreB;
LeggereFile(&fp);
LeggereVettoreADaFile(fp, vettoreA);
//ScrivereVettoreB(vettoreA);
//StampareVettoreB(vettoreB);
system("pause");
return 0;
}
void LeggereFile(FILE **fp){
if((*fp = fopen("file.txt","r")) == NULL){
printf("errore apertura file\n");
}
return;
}
void LeggereVettoreADaFile(FILE *fp, int *vettoreA){
int i;
int j = 0;
int dim = ContaElementiFile(fp);
AllocareVettoreA(vettoreA, dim);
rewind(fp);
while(!feof(fp)){ <-----------------------------------------il ciclo viene eseguito una sola volta
//printf("se questo messaggio viene stampato 9 volte il ciclo funziona");
fscanf(fp, "%d%*c ", &i);
ScrivereElementoInVettoreA(i, j, vettoreA );
j++;
}
return;
}
int ContaElementiFile(FILE *fp){
int i = 0;
while(!feof(fp)){
fscanf(fp, "%*d%*c ");
i++;
}
return i;
}
void AllocareVettoreA(int *vettoreA, int dim){
vettoreA = (int *) malloc (dim * sizeof(int));
return;
}
void ScrivereElementoInVettoreA(int i, int j, int *vettoreA){
*(vettoreA + j) = i;
return;
}
il contenuto del file di testo è :
2, 3, 5, 2, 7, 4, 3, 2, -1