Cześć mam do zrobienia zadania liczenie poszczególnych bitów , w sumie wiem jak je zrobić jednak wywołując funkcję za to odpowiedzialną program się crashuje nie do końca wiem dlaczego.
struct pom
{
unsigned char a : 1;
unsigned char b : 1;
unsigned char c : 1;
unsigned char d : 1;
unsigned char e : 1;
unsigned char f : 1;
unsigned char g : 1;
unsigned char h : 1;
};
union liczba
{
unsigned char n;
struct pom abc;
};
struct st
{
int b0;
int b1;
int b2;
int b3;
int b4;
int b5;
int b6;
int b7;
};
int func(struct st* statistic, unsigned char value)
{
if(statistic=NULL) return 1;
union liczba tmp;
tmp.n=value;
if(tmp.abc.a==1)
{
statistic->b0+=1;
}
if(tmp.abc.b==1)
{
statistic->b1+=1;
}
if(tmp.abc.c==1)
{
statistic->b2+=1;
}
if(tmp.abc.d==1)
{
statistic->b3+=1;
}
if(tmp.abc.e==1)
{
statistic->b4+=1;
}
if(tmp.abc.f==1)
{
statistic->b5+=1;
}
if(tmp.abc.g==1)
{
statistic->b6+=1;
}
if(tmp.abc.h==1)
{
statistic->b7+=1;
}
return 0;
}
Wywołanie w maine wygląda następująco
struct st statistic;
char tmp;
while(!feof(in))
{
fscanf(in,"%c",&tmp);
func(&statistic,tmp);
}