Fscanf salta caratteri...

di il
8 risposte

Fscanf salta caratteri...

Nep programma fscanf dovrebbe leggere i primi 10 numeri, ma invece di partire dal primo inizia dall'undicesimo e prosegue.
#include <stdio.h>
#include <stdlib.h>

//legge i primi 10 numeri//

main()
{
 	  FILE *fp;
 	  char nome_file[30];
 	  
 	  
 	  
 	  int i;
 	  int vettore[10];
 	  
 	  if ((fp= fopen( "file.txt", "r"))==NULL)
 	  printf("Il file non puo' essere aperto!");
 	  
 	  
 	  else{
	  	   while (!feof(fp))
	  	   {
		   		 
		   		 for (i=0; i<10; i++)
	  	   
	  	   fscanf ( fp, "%d", &vettore[i]); }
			  }
	  	   
	  	    fclose (fp); 
	  	    
	  	     printf("elementi letti:\n");
	  	   
	  	   for (i=0; i<10; i++)
	  	   
	  	  printf("%d ", vettore[i]);


             system ("PAUSE");
            return 0; }
Grazie

8 Risposte

  • Re: Fscanf salta caratteri...

    Perchè prima di postare il codice non gli dai una "ripulita"? Tralasciando l'indentazione oscena, ma a cosa serve char nome_file[30]?
    Inoltre, come puoi pretendere che qualcuno ti aiuti se non dai neanche il file .txt da cui vengono caricati i dati? Non ti sembra un'informazione importante da dare?
  • Re: Fscanf salta caratteri...

    Hai ragione, char nome_file non serve, ho dimenticato di cancellarlo perché prima stavo provando un'altra cosa.. Il file di testo non l'ho messo perché mi sembrava chiaro che era una sequenza di numeri, comunque potrebbe essere una cosa del genere:

    1 2 3 4 5
    6 7 8 9 10 21 11 12 13 14 15 16 17 18

    il programma mi stampa da 21 a 18, e chiude con 10.
  • Re: Fscanf salta caratteri...

    Ma scusa, se ti dico che il codice è indentato male e ci sono cose inutili alla comprensione del problema, non ti viene in mente che magari era meglio ripostare nuovamente il codice dopo averlo sistemato?
  • Re: Fscanf salta caratteri...

    #include <stdio.h>
    #include <stdlib.h>
    
    //legge i primi 10 numeri//
    
    main()
    {
     	  FILE *fp;
     	  int i;
     	  int vettore[10];
     	  
     	  if ((fp= fopen( "file.txt", "r"))==NULL)
     	  printf("Il file non puo' essere aperto!");
     	  
          else{
    	  	   while (!feof(fp))
    	  	   {
    		   		 
    		   		 for (i=0; i<10; i++)
    	  	   
    	  	         fscanf ( fp, "%d", &vettore[i]); }
    		    }
    	  	   
          fclose (fp); 
    	  	    
          printf("elementi letti:\n");
    	  	   
          for (i=0; i<10; i++)
    	  	   
    	  	  printf("%d ", vettore[i]);
    
    system ("PAUSE");
    return 0; }
    
  • Re: Fscanf salta caratteri...

    Prova a fare una printf() a video del valore che leggi subito dopo la fscanf() così vedi da solo cosa succede
    for (i=0; i<10; i++)
    {          
        fscanf ( fp, "%d", &vettore[i]);
        printf( "%d", vettore[i] );
    }
    poi cerca di identare meglio il codice, a parte l'inizio poi il resto è tutto incolonnato a casaccio
  • Re: Fscanf salta caratteri...

    Ho capito, grazie mille.. spiego oppure lascio questo alone di mistero?
  • Re: Fscanf salta caratteri...

    pro grammo ha scritto:


    Ho capito, grazie mille.. spiego oppure lascio questo alone di mistero?

    Spiega quello che hai capito
  • Re: Fscanf salta caratteri...

    Il problema è che questo for
    for (i=0; i<10; i++)
               
                     fscanf ( fp, "%d", &vettore[i]); 
    finisce prima di questo while
    while (!feof(fp))
    cioè: dopo che il vettore ha ricevuto i primi 10 numeri con l'fscanf, poiché non è stato raggiunto l' EOF nel file, ricomincia a caricare dall'inizio.
Devi accedere o registrarti per scrivere nel forum
8 risposte