Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15
Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62
Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40
Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40
Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28
Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354
Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532
Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 656
======Learn C The Hard Way======
This is the in-progress free version of Learn C the Hard Way. It was
just converted to a new format so things might be missing or formatted
wrong. Email help@learncodethehardway.org to report any problems.
======Table Of Contents======
* Preface
* Introduction: The Cartesian Dream Of C
* Exercise 0: The Setup
* Exercise 1: Dust Off That Compiler
* Exercise 2: Make Is Your Python Now
* Exercise 3: Formatted Printing
* Exercise 4: Introducing Valgrind
* Exercise 5: The Structure Of A C Program
* Exercise 6: Types Of Variables
* Exercise 7: More Variables, Some Math
* Exercise 8: Sizes And Arrays
* Exercise 9: Arrays And Strings
* Exercise 10: Arrays Of Strings, Looping
* Exercise 11: While-Loop And Boolean Expressions
* Exercise 12: If, Else-If, Else
* Exercise 13: Switch Statement
* Exercise 14: Writing And Using Functions
* Exercise 15: Pointers Dreaded Pointers
* Exercise 16: Structs And Pointers To Them
* Exercise 17: Heap And Stack Memory Allocation
* Exercise 18: Pointers To Functions
* Exercise 19: A Simple Object System
* Exercise 20: Zed's Awesome Debug Macros
* Exercise 21: Advanced Data Types And Flow Control
* Exercise 22: The Stack, Scope, And Globals
* Exercise 23: Meet Duff's Device
* Exercise 24: Input, Output, Files
* Exercise 25: Variable Argument Functions
* Exercise 26: Write A First Real Program
* Exercise 27: Creative And Defensive Programming
* Exercise 28: Intermediate Makefiles
* Exercise 29: Libraries And Linking
* Exercise 30: Automated Testing
* Exercise 31: Debugging Code
* Exercise 32: Double Linked Lists
* Exercise 33: Linked List Algorithms
* Exercise 34: Dynamic Array
* Exercise 35: Sorting And Searching
* Exercise 36: Safer Strings
* Exercise 37: Hashmaps
* Exercise 38: Hashmap Algorithms
* Exercise 39: String Algorithms
* Exercise 40: Binary Search Trees
* Exercise 41: Using Cachegrind And Callgrind For Performance Tuning
* Exercise 42: Stacks and Queues
* Exercise 43: A Simple Statistics Engine
* Exercise 44: Ring Buffer
* Exercise 45: A Simple TCP/IP Client
* Exercise 46: Ternary Search Tree
* Exercise 47: A Fast URL Router
* Exercise 48: A Tiny Virtual Machine Part 1
* Exercise 48: A Tiny Virtual Machine Part 2
* Exercise 50: A Tiny Virtual Machine Part 3
* Exercise 51: A Tiny Virtual Machine Part 4
* Exercise 52: A Tiny Virtual Machine Part 5
* Next Steps
* Deconstructing K&R C
======Frequently Asked Questions======
How long does this course take?
You should take as long as it takes to get through it, but focus
on doing work every day. Some people take about 3 months, others
6 months, and some only a week.
What kind of computer do I need?
You will need either an OSX or Linux computer to complete this
book.
Copyright (C) 2010 Zed. A. Shaw
Credits