Programma in C (12345)

di il
7 risposte

Programma in C (12345)

Buonasera, ho scritto alcuni giorni fa su questo forum e mi avete aiutato molto. Ora però ho un altro problema, ovvero non riesco a salvare in un file i valori del mio vettore allocato dinamicamente. Questo è il mio codice (non riesco ad utilizzare i TagCode per scrivere). Grazie mille

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
int numero, *numeri=NULL, lunghezza=0;
int conta=0, new_conta=0;
FILE *fd;



do {
printf ("Inserisci un numero: \n");
scanf ("%d", &numero);
if (numero>=0) {
numeri=(int*)realloc(numeri,++lunghezza*(sizeof(int)));
if (numero<0) {
printf ("Memoria insufficiente per allocare\n");
exit (1);
}
*(numeri+(lunghezza-1))=numero;
}

conta=conta+1;
new_conta=conta-1;

} while (numero>=0 || lunghezza==0);

printf ("\n");
printf ("I numeri inseriti sono %i\n", new_conta);

printf ("I numeri inseriti sono i seguenti\n");


for (i=0; i<new_conta; i++)
printf ("Numero %d: %d\n", i+1, numeri);
free (numeri);

fd=fopen("Numeri.txt", "w");
if (fd==NULL) {
perror ("Errore in apertura del file");
exit (1);
}
fprintf(fd, "Numero %d: %d\n", i+1, numeri);
fclose (fd);


return 0;
}

7 Risposte

  • Re: Programma in C (12345)

    Senza i tag code il codice non si capisce

    Comunque la free non la devi eseguire finché usi il vettore
  • Re: Programma in C (12345)

    
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int i;
    	int numero, *numeri=NULL, lunghezza=0;
    	int conta=0, new_conta=0;
    	FILE *fd;
    
    
    	
    	do {
    		printf ("Inserisci un numero: \n");
    		scanf ("%d", &numero);
    		if (numero>=0) {
    			numeri=(int*)realloc(numeri,++lunghezza*(sizeof(int)));
    			if (numero<0) {
    				printf ("Memoria insufficiente per allocare\n");
    				exit (1);
    			}
    		    *(numeri+(lunghezza-1))=numero;
    	   } 
    	   
    	   conta=conta+1;
    	   new_conta=conta-1;
    	
    	   } while (numero>=0 || lunghezza==0);
    	   
    	   printf ("\n");
    	   printf ("I numeri inseriti sono %i\n", new_conta);
    	   
    	   printf ("I numeri inseriti sono i seguenti\n");
    	   
    	   
    	   for (i=0; i<new_conta; i++)
    	   printf ("Numero %d: %d\n", i+1, numeri[i]);
           free (numeri);
           
           fd=fopen("Numeri.txt", "w");
           if (fd==NULL) {
    	   perror ("Errore in apertura del file");
    	   exit (1);
    	 }
    	   fprintf(fd, "Numero %d: %d\n", i+1, numeri[i]);
    	   fclose (fd);
        
        
    	return 0;
    }
    
    
  • Re: Programma in C (12345)

    Hai letto la mia risposta?
  • Re: Programma in C (12345)

    Se ti serve per lavoro, OK, altrimenti lascia perdere C e C++:
    - il C e' un linguaggio che SEMBRA semplice, ma nasconde un'infinita' di rogne
    - il C++ e' un linguaggio decisamente complesso, si porta dietro le rogne del C multiplicate per 100

    Un linguaggio alternativo, "semplice" (SEMPRE per modo di dire) e' sicuramente Python.
    Ti evita tutta una serie di complessita' iniziali che fanno si che puoi iniziare a scrivere programmi "ragionevolmente" complessi in "breve" tempo (SEMPRE per modo di dire)
  • Re: Programma in C (12345)

    Sì, ho letto la tua risposta però anche togliendo la free il risultato non cambia, cioè quando apro il file che si genera non trovo all'interno i miei valori. Non so cosa ho sbagliato
  • Re: Programma in C (12345)

    Ma il ciclo che scrive su file dov'è?
  • Re: Programma in C (12345)

    Risolto, non so davvero come ringraziarvi
Devi accedere o registrarti per scrivere nel forum
7 risposte