Ciao a tutti ho il seguente dilemma.
Ho un array di unsigned char che può contenere solo valori 0 e 1. Vorrei scrivere questi valori in un file in modo che ogni elemento dell'array mi occupi un bit. Non essendo molto pratico della programmazione bit a bit sto riscontrando dei problemi di cui non capisco il motivo. Ho scritto il seguente programmino:
codice:
out2=fopen("Prova.txt","wb");
unsogned char c,d;
c='/0';
d='/1';
//in questo modo le variabili dovrebbero avere i bit
//c = 00000000
//d = 00000001
for(j=0;j<lengtharray;j+=8)
{
//scorro tutto l'array a passi di otto(bit in un byte)
for(i=0;i<8 && (j+i)<lungharray;i++)
{
//per ogni porzione di 8 elementi controllo il valore
//se è 1 aggiorno la variabile che scriverò nel file
if (mioarray[j+i]==1)
{
d=<<(8-i); //scifto il bit di i posizioni
c=c|d; //metto c in or con d cosi da "accendere" il bit opportuno
d='/1'; //reimposto d=00000001
}
}
//scrivo c nel file out
fprintf(out,"%b",c);
//reimposto c =00000000 e analizzo il successivo slot di 8 elementi
c='/0';
}
Non funziona,anzi il programma va in loop infinito!!!
al posto di printf ho provato anche la funzione
fputc(out2,c);
e,essendo un array di unsigned char ho anche cambiato la condizione
mioarray[j+i]=='1';
ma senza risultati.
Ovviamente se qualcuno ha un consiglio per scrivere del codice più pulito,oltre che per far funzionare questo è il benvenuto