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> 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\n" ):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 \ i@bK'(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.