Top 10 C programming resources that will turn you into a better programmer

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.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> main ( t , _ , a ) char * a ; { return ! 0 < t ? t < 3 ? main ( - 79 , - 13 , a + main ( - 87 , 1 - _ , 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

" ) : 9 : 16 : t < 0 ? t < - 72 ? main ( _ , t , "@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\ ,/+#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 \ ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\ #'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,{}:

uwloca-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.