Salve gente ho un errore che non riesco proprio a trovare.
Qualche premessa: sono niubbo e di c sò pochissimo. Il prog dovrebbe frmi vedere i bit dei caratteri di un file di testo il problema che mi dà un segmentation fault che non riesco a sistemare.
posto di seguito il sorgente. (non sò se funzia come dovrebbe). Ci sono anche degli step per cercare di vedere l'errore ma io non lo trovo.
#include "stdio.h"
#include "stdlib.h"
long int pot_2(int j)
{
int k=0;
long int ris=1;
if (j==0){
// printf("Stò tornando 1 \n");
return(1);
}
else {
for(k=0; k<j; k++){
ris=ris*2;
// printf("Stò tornando %d \n",ris);
}
return(ris);
}
}
main(argc,argv)
int argc;
char *argv[];
{
int arr_bit[15];
FILE *fp;
char car;
char buf_tex;
char car_tmp;
int num_1;
int num_2;
int num;
int num_tmp;
double temp=0;
int i=0;
int t=0;
printf("Inserire due numeri \n");
scanf("%d",&num_1);
scanf("%d",&num_2);
fp=fopen("prova.txt","rb");
printf("Step 1 \n");
// buf_tex=malloc(sizeof(char));
// for(t=0;t<6;t++) {
while(!(feof(fp))) {
if (ferror(fp)) {
printf("Riscontrato errore durante l'accesso al file \n");
exit(1);
}
fread(&buf_tex,sizeof(char),1,fp);
printf("Il carattere %c e\' formato da qst bit : ",buf_tex);
for(i=0;i<8;i++) {
if ( pot_2(i) & (buf_tex) ) {
arr_bit[7-i]=1;
}
else {
arr_bit[7-i]=0;
}
}
for (i=0 ; i < 8; i++) {
printf("%d ",arr_bit);
}
printf("\n");
}
// free(buf_tex);
printf("Step 2 \n");
printf("Step 3 \n");
i=0;
for(i=0;i<16;i++){
if ( pot_2(i) & num_1 ) {
arr_bit[15-i]=1;
}
else {
arr_bit[15-i]=0;
}
printf(" %d \n",i);
}
printf("Step 4 \n");
i=0;
for(i=0 ; i<16;i++){
printf("%d ", arr_bit );
}
printf("\nStep 5 \n");
printf("Step 6 \n");
rewind(fp);
printf("Step 7 \n");
if (ferror(fp)) {
printf("Errore durante l\'accesso al file \n");
exit(1);
}
printf("Step 8 \n");
fread(&buf_tex,sizeof(char),1,fp);
printf("Step 9 \n");
printf("Cambiando il bit meno significativo di %c ottengo : %c",buf_tex,car_tmp );
close(fp);
printf("\n L\' And logico tra %d e %d è : %d \n",num_1,num_2,num);
printf(" 2 alla 7 = %d \n",pot_2(7));
printf("2 alla 0 = %d \n",pot_2(0));
}
Trovato l'errore è nell'array grazie lo stesso e ciao
Ultima modifica effettuata da campo il 25/09/2006 alle 0:46 |