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