Common pitfalls

Mixing signed and unsigned integers in arithmetic operations

Macros are simple string replacements

Forgetting to copy the return value of realloc into a temporary

Forgetting to allocate one extra byte for 0

Misunderstanding array decay

Forgetting to free memory memory leaks

Copying too much

Mistakenly writing instead of when comparing

Incautious use of semicolons

Adding a semicolon to a define

Newline character is not consumed in typical scanf call

Checking logical expression against true

Undefined reference errors when linking

Doing extra scaling in pointer arithmetic

Multi-line comments cannot be nested

Comparing floating point numbers

Ignoring return values of library functions

Floating point literals are of type double by default

Recursive function missing out the base condition