Tools for programming in C
CINT is an interpreter for C and C++. This can help you interactively try out pieces of C code to avoid the lengthy edit-compile-run cycle. Note that it does not understand C99 constructs.
cppcheck can check your C and C++ code statically (i.e. without running it) for errors. This can save you hours of debugging.
valgrind The two most common mistakes in C programs are running off the end of arrays, and use of uninitialized memory. Valgrind can catch both of these errors by running your program in a virtual machine (roughly speaking).
gdb is the standard debugger on Linux systems (and on many other Unix-like systems).