Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Programmazione (https://www.hwupgrade.it/forum/forumdisplay.php?f=38)
-   -   Aiuto FILE (C) (https://www.hwupgrade.it/forum/showthread.php?t=2904185)


9abs 14-02-2020 00:12

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);
       

}

è un po lungo scusate!

misterx 14-02-2020 07:01

di primo acchito non vedo la fclose(fin); fclose(fout);

Kaya 14-02-2020 07:38

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.

9abs 14-02-2020 09:10

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!

Kaya 14-02-2020 10:59

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 ..


Tutti gli orari sono GMT +1. Ora sono le: 23:11.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.