People consider computer programming a little tiresome but some find it more enjoyable. Every programmer has to keep up with the latest trends coming in the programming languages. Most of the programmers start programming in C as it is the most commonly used programming language for writing operating systems and applications.

If you are reading this article, most probably you are already a programmer or want to become a programmer. Luckily, you are on the right place because in this article I have gathered C programming websites/tutorials that can help you becoming a good C programmer. These websites/tutorials will help you to learn basics as well as advance programming techniques in C language.

1.      C Programming Notes

These notes are part of the UW Experimental College course on Introductory C Programming. They are based on notes prepared (beginning in Spring, 1995) to supplement the book The C Programming Language, by Brian Kernighan and Dennis Ritchie, or K&R as the book and its authors are affectionately known.

Introduction of the first chapter says:

C’s small, unambitious feature set is a real advantage: there’s less to learn; there isn’t excess baggage in the way when you don’t need it. It can also be a disadvantage: since it doesn’t do everything for you, there’s a lot you have to do yourself. (Actually, this is viewed by many as an additional advantage: anything the language doesn’t do for you, it doesn’t dictate to you, either, so you’re free to do that something however you want.)

2.      Programming in C – UNIX System Calls and Subroutines using C.

David Marshall’s ‘Programming in C’ tutorial covers application design, UNIX system calls  and subroutines using C programming language. This tutorial covers tons of topics on C, from basics to multi-threading and POSIX to RPC Programming. My favorite piece from the text is:

C is much more flexible and free-wheeling. This freedom gives C much more power that experienced users can employ. The above example below (mystery.c) illustrates how bad things could really get.

#include <stdio.h>

char *a;
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
[email protected]'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

Compile and run it here online yourself.

3.      C Lesson by Chris Sawtell

This archive contains a complete course for you to learn the ‘C’ computer language itself. The language used is correct conversational English. The author has written the lessons using the same language constructions which I would use if I were teaching you directly.

Note: Original URL is not working so a mirror URL is provided.

4.      comp.lang.c Frequently Asked Questions

Steve Summit maintains a FAQ for the C language, which he’s also published in a book “C Programming FAQs: Frequently Asked Questions” (Addison-Wesley, 1995, ISBN 0-201-84519-9).

Main topics covered are: 1. Declarations and Initializations; 2. Structures, Unions, and Enumerations; 3. Expressions; 4. Pointers; 5. Null Pointers; 6. Arrays and Pointers; 7. Memory Allocation; 8. Characters and Strings; 9. Boolean Expressions and Variables; 10. C Preprocessor; 11. ANSI/ISO Standard C; 12. Stdio; 13. Library Functions; 14. Floating Point; 15. Variable-Length Argument Lists; 16. Strange Problems; 17. Style; 18. Tools and Resources; 19. System Dependencies

5.      Collection of C programming material at Lysator Society

There is an electronic collection of C programming material at Lysator Society website. Lysator is an academic computer society located at Linköping University in Linköping, Sweden.

The collection also links to some other C programming resources on the internet.

6.      A collection of useful libraries written in C

This is a catalog of useful free software/libraries that runs under free operating systems — particularly the GNU operating system and its GNU/Linux variants.

The catalog lists roughly 100 libraries and tools written in C including zlib, Gnutls, CUnit and Gmp.

7.      The C Programming Language Standard

ISO/IEC JTC1/SC22/WG14 is the international standardization working group for the programming language C.

8.      High-level and Low-level Programming in C

You can extend the C programming language with certain utilities and idioms to get some the features of a “high-level”‘ programming language. Also, you can bypass some of C’s regular features to get direct access to low-level capabilities.

Note: This URL is not working and trying to locate an alternative.

9.      Microsoft C Language Reference

The C Language Reference describes the C programming language as implemented in Microsoft C. The book’s organization is based on the ANSI C standard with additional material on the Microsoft extensions to the ANSI C standard.

10.  C++ Annotations (Version 10.9.2) by Frank Brokken

This tutorial is intended for advanced C programmers who want to transition to C++. It continues where the C programming language ends—such as at pointers, memory allocation, and compound types—which makes it a very good C++ programming guide.