Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema:leggere da file e scrivere su vettore

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

    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464

    Re: problema:leggere da file e scrivere su vettore

    Dato che nelle funzioni carica_ passi a leggere un file che hai appena scritto, devi riposizionarti all'inizio con una rewind

    codice:
    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++;
        
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    1
    A cosa serve inserire la la libreria <stdlib.h>?

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    Originariamente inviato da asuss
    A cosa serve inserire la la libreria <stdlib.h>?
    stdlib.h non è una libreria ma un semplice header
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.