How to write a program to modify a word using a bit mask ?

#include <stdio.h>

int main()
{

typedef int bool;
bool f; /* conditional flag */
unsigned int m; /* the bit mask */
unsigned int w; /* the word to modify: if (f) w |= m; else w &= ~m; */

printf("Enter the word to modify ");
scanf("%u",&w);

printf("Enter the bit mask ");
scanf("%u",&m);

/* w = w ^ ((-f ^ w) & m ); */

/* OR, for superscalar CPUs: */

w = (w & ~m) | (-f & m);

printf("Modified value is %u \n",w);

return 0;
}

Hacking the program for counting bits set

$gcc counting-bits-set-naive-way-related.c
$./a.out
Enter v 8474578
Total bits set in v is 11
$./a.out
Enter v 1
Total bits set in v is 1
$./a.out
Enter v 2
Total bits set in v is 1
$./a.out 3
Enter v a
Total bits set in v is 0
$cat counting-bits-set-naive-way-related.c
#include <stdio.h>

int main()
{
unsigned int v; /* count the number of bits set in v */
unsigned int c; /* c accumulates the total bits set in v */

printf("Enter v ");
scanf("%u",&v);
for(c = 0; v ; v >>= 1)
{
c = c + (v & 1);
}

printf("Total bits set in v is %u \n",c);
return 0;
}
$

How to check exit status of a command ?

$stat 
stat: missing operand
Try 'stat --help' for more information.
$echo $?
1
$stat popen1-p1.c 
  File: ‘popen1-p1.c’
  Size: 473       	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 5245647     Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ jeffrin)   Gid: ( 1000/ jeffrin)
Access: 2014-06-16 23:31:58.746088758 +0530
Modify: 2014-06-16 23:31:27.649735653 +0530
Change: 2014-06-16 23:31:27.649735653 +0530
 Birth: -
$echo $?
0
$uname 
Linux
$echo $?
0
$uname -top
uname: invalid option -- 't'
Try 'uname --help' for more information.
$echo $?
1
$

Hacking with a program which has initialization of a MYSQL object

$ls
connect1-p1.c
$cp connect1-p1.c connect1-p2.c 
$emacs connect1-p2.c 
$gcc -lmysqlclient -g -L/usr/lib/mysql connect1-p2.c
$./a.out 
mysql_init failed
$echo $?
1
$./a.out 2> error.txt
$cat error.txt 
mysql_init failed
$emacs connect1-p2.c
$gcc -lmysqlclient -g -L/usr/lib/mysql connect1-p2.c
$./a.out 
mysql_init failed
$./a.out 2> error.txt
mysql_init failed
$cat error.txt 
$