|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jan 2020
Messaggi: 17
|
Aiuto FILE (C)
Mi da errore nella modifica nel file..mi ritorna solo un 0.
Sembra non riesca a leggere il file in modo corretto ma non mi da nessun errore.. Codice:
#include <stdio.h>
#include <stdlib.h>
void Salva(FILE * fin,FILE * fout);
#define MAX 10
int main(){ //main
FILE* fin,* fout;
fin=fopen("text.txt","r");
if(fin==NULL)
printf("errore apertura fin");
fout=fopen("text.txt","w");
if(fout==NULL)
printf("errore apertura fout");
Salva(fin,fout);
}
//-------------------------------------
void * xmalloc(int n){ //return v.fin
int* v_fin;
if((v_fin=malloc(n*sizeof(int)))==NULL){
printf("errore allocazione");
exit(0);
}
return v_fin;
}
int * negativi(int A[],int n,int* count){ //return v_fin
int i,j,c;
j=c=0;
int* v_fin;
for(i=0;i<n;i++){
if(A[i]<0)
c++;
}
*count=c;
v_fin=xmalloc(c);
for(i=0;i<c;i++){
if(A[i]<0){
v_fin[j]=A[i];
j++;
}
}
return v_fin;
}
//-----------------------------------------
void Salva(FILE * fin,FILE * fout){ //f per operazioni sui file
int i;
int count_n,count_neg;
int *v_inz,*v_fin;
//il primo numero di file indica quanti elementi ha l'array
fscanf(fin,"%d",&count_n);
printf("%d",count_n); //mi stampa un numero random non il primo
numero del file
v_inz=xmalloc(count_n);
for(i=0;i<count_n;i++){
fscanf(fin,"%d",&v_inz[i]);
}
v_fin=negativi(v_inz,count_n,&count_neg);
fprintf(fout,"%d\n",count_neg);
for(i=0;i<count_neg;i++){
fprintf(fout,"%d\n",v_fin[i]);
}
free(v_inz);
free(v_fin);
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
|
di primo acchito non vedo la fclose(fin); fclose(fout);
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3276
|
Non capisco alcune cose.
in primis fin=fopen("text.txt","rn==NULL) non ha il doppio apice di chiusura E poi perchè due puntatori? Potresti fare tutto con un unico fp = fopen("test.txt", "a+"); In questo modo non dovresti avere problemi. |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Jan 2020
Messaggi: 17
|
La prova chiedeva esplicitamente l uso di una funzione
void Salva (File * fin, File * fout); Forse ho sbagliato e dovevo usare due file distinti.. Provo a sistemare quello che mi avete fatto notare e vedo che ne esce..grazie! |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2005
Messaggi: 3276
|
Capisco che è per un esercizio, però mi pare assurdo fare una cosa del genere SULLO STESSO FILE.
Altra domanda "rn" e "wut" nel fopen.. scusa ma cosa significano? Non trovo nulla nella documentazione .. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:52.



















