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:
Non funziona,anzi il programma va in loop infinito!!!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'; }
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

Rispondi quotando
