Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve a tutti,
pongo alla vostra attenzione un esercizio in C che non riesco ancora a risolvere.
Se gentilmente qualcuno riesce a darmi una mano.
Vi ringrazio anticipatamente.
1)supposta l'esistenza di un file binario "dates.dat" in cui nei primi 3 caratteri sono memorizzate le seguenti informazioni:
a)primo numero intero [0-255]
b)secondo numero intero [0-255]
c)un solo carattere!!!
e nei successivi byte gli elementi di una matrice numerica;
I. si acquisisca tale matrice numerica in una struttura dinamica appositamente allocata a run time;
II. si allochi, sempre dinamicamente, un vettore contenente soltanto i valori non nulli presenti in questa matrice e si stampi lo stesso vettore in un file di testo "vettore.txt" appositamente creato.
Nota bene: non è noto a priori nè il numero nè il tipo di elementi che costituiscono la matrice iniziale(e conseguentemente il vettore finale) e l'informazione relativa al tipo deve essere ricavata leggendo il carattere di cui alla lettera c) ovvero c: carattere senza segno; C: carattere con segno; I: intero; F: float; D: double.
se gentilmente qualcuno più esperto di me può darmi una mano, gli e ne sarò grato...
Ultima modifica effettuata da dodo154 il 26/02/2011 alle 12:08
Beh questa e' la traccia del problema, non credo troverai qualcuno che ti risolva tutto il problema, specifica quale parte del problema non riesci a risolvere e mostra il codice che hai eventualmente scritto fino ad ora.
E' sbagliato; controlla l'aritmetica dei puntatori. Dovrebbe essere:
Codice sorgente - presumibilmente Plain Text
bufc[k]=(*matc)[i][j];
Altre cose che dovresti migliorare nel tuo codice:
1. Evita nomi come x1, matc, k. Non sono descrittivi. Usa nomi come matriceChar, numElementi, etc.
2. Una funzione non dovrebbe mai avere piu' di 7 parametri, perche' sono difficili da comprendere e ricordare.
3. Quando fai confronti come:
Codice sorgente - presumibilmente Plain Text
if((*matc)[i][j] != 0)
Devi prima assicurarti che quello spazio di memoria sia inizializzato! Chiamare malloc non lo fara' per te, e stai giocando con il fuoco se per concidenza il sistema operativo ti alloca un area di memoria dove tutto e' zero. Usa la funzione memset o bzero per inizializzare un area di memoria a zero prima di utilizzarla.