Updated: 2003-01-19 05:50

C Language Programming Resources

This page deals with programming in C.

Last revised: Sunday January 19, 2003 05:50.

Is Clarity More Important Than Correctness?
If your program is clear you can make it correct.
Can you be sure your program is correct if it isn't clear?

- J. Blustein <jamie@csd.uwo.ca>, How to Debug.

Algonquin C Programming Information

These first items are selected to be of use to people writing programs in the Algonquin environment.

Help with debugging

You can make sure all your malloc/free function calls are matched by using the MEM software package.  It replaces these C Library function calls: malloc, calloc, realloc, strdup, and free.   Select here for details.  You can pick up the software itself by selecting here.

Miscellaneous

Compiling at home and at Algonquin: How to do it!
Creating a DOS executable (to enable redirection) in Turbo C and Borland C.
Catching Integer Overflow: How to do it.
Changing the Run-Time Stack and Heap Size: Check this out if you have a large program that keeps faulting. You may be running out of internal heap or stack space.
Defensive C Programming: Avoid C traps.
Robert Allison of Algonquin College describes how to write C programs.
Improving and Fixing C Code, using examples from Algonquin student assignments.
Different ways to write Zero in C

Highlights and Excerpts from the WWW

These are items that I think C programmers should see.

Rob Pike on C program style.
A program is a sort of publication. It's meant to be read by the programmer, another programmer (perhaps yourself a few days, weeks or years later), and lastly a machine. The machine doesn't care how pretty the program is - if the program compiles, the machine's happy - but people do, and they should.
Henry Spencer's 10 Commandments of C Programming
...Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end...
An excellent C topic reference
This points to many useful topics about C programming, including a bit of C history such as the B programming language that I used before I learned C: B didn't believe in type­checking, period. There was only one type, the machine word, and the programmer was responsible for applying to a variable only such operators as made sense.

C on the World Wide Web

Steve Summit's Introductory C course. (highly recommended!)
A tutorial on programming in C prepared by David Marshall of Department of Computing Mathematics at Cardiff University of Wales, United Kingdom
A mirror of Introduction to Object Oriented Programming Using C++: a tutorial on programming in C++, sponsored by the Globewide Network Academy [GNA] of free Internet courses
Frequently Asked Questions about C programming.
Lysator Computer Society's Hotlinks to C Resources
Ten Gotchas of the C language
Information sources include:
The lysator library.
Learn C/C++ today page maintained by Vinit Carpenter
Archive of the C Users Journal.
The C Side by Derek Harper.
*c:c++ resources by E.J. Inglis-Arkell.
Coding standards include:
Recommended C Style and Coding Standards by L.W. Cannon et al.
C language courses/references include:
Introductory C Programming by Steve Summit.
C Programming at the Central Institute of Technology, New Zealand.
Programming in C by Dave Marshall, University of Cardiff.
C Programming by Steve Holmes, University of Strathclyde.
Introduction to C Programming by Marshall Brian.
Introduction to Programming in C at Worcester Polytechnic Institute.
Phil's C Course by Phil Ottewell.
C Programming Language Information by J Blustein.
Introduction a la programmation en ANSI-C by H Faber, (French).
Other bits and pieces:
The SNIPPETS collection of C/C++ code by Bob Stout.

Security Issues in C Programs

The Internet is full of security incidents arising from code that forgets to check for buffer overflow. This is a serious programming error, and I don't accept student code that does not protect itself against overflowing its own internal buffers. Check the size of the buffer before you append anything to it!
CERT security advisory concerning failure to handle sign-extension in characters
CIAC security advisory concerning failure to check for input buffer overflow
AUSCERT security advisory concering failure to check for input buffer overflow
SANS Digest: CURMUDGEON'S EXECUTIVE SUMMARY
Buffer overflows appear to be the most common problems reported
in May, with denial-of-service problems a distant second. Many
of the buffer overflow problems are probably the result of careless
programming, and could have been found and corrected by the vendors,
before releasing the software, if the vendors had performed elementary
testing or code reviews along the way.

C oddities

The International Obfuscated C Code Contest has some prime examples of how to write very confusing C code.

Once you think you understand loops and switch statements, see Duff's Device.

Last revised: Sunday January 19, 2003 05:50.
Email comments to Ian! D. Allen idallen@freenet.carleton.ca

Web Author: Ian! D. Allen idallen@idallen.ca      Updated: 2003-01-19 05:50

Internet Free Zone Level 1 logo Support free and non-commercial Internet.

Any Browser logo This site works best in Any Browser, a campaign for non-specific WWW.

Creative Commons License logo This work is licensed under a Creative Commons License.