Witam mam program kalkulator bitowy który pobiera wartości argumentów funkcji main. Niestety podczas odpalania na ubuntu mam bład: "[1]+ Naruszenie ochrony pamięci (zrzut pamięci) ./a.out 100 220". Program odpalam w terminalu "gcc nazwa.c" następnie "./a.out 100 220 &". Może mi ktoś wyjaśnić dlaczego tak sie dzieje ?
#include<stdio.h>
#include<stdlib.h>
int zamiana(int x);
int main(int argc, char **argv)
{
int a,b,c;
a = atoi(argv[1]);
b = atoi(argv[2]);
printf("twoja pierwsza liczba to: %d\n",a);
zamiana(a);
printf("Twoja druga liczba to: %d\n",b);
zamiana(b);
switch(argv[3][0])
{
case '~':
{
a=(~a);
b=(~b);
zamiana(a);
zamiana(b);
break;
}
case '&':
{
c=a&b;
zamiana(c);
break;
}
case '|':
{
c=a|b;
zamiana(c);
break;
}
case '^':
{
c=a^b;
zamiana(c);
break;
}
default:
{
printf("podales zly operator\n");
break;
}
}
return 0;
}
int zamiana(int x)
{
int i;
char tab[32];
printf("Twoja liczba po zamianie na bity to: ");
for (i = 31; i >= 0; i--)
{
tab[i] = ((x >> i) & 1);
printf("%d", tab[i]);
}
printf("\n");
}
mad_penguin