Comment loops with invariants. Don't follow for or while with a semicolon unless you mean it. In a macro definiton, parenthesise everything , and avoid side effects. Storage classes and static allocation. Iteration and recursion.
Return types default to int , so remember to include header files.
Write a program that manages a very small database in an array of struct s. To define a self-referential pointer in a struct , use a tag and not a typedef . Iteratively constructed strings must be terminated. Don't return a pointer to a local auto . Avoid the possibility of buffer overruns.