Some one asked a question for studying C programming language on stackexachange.com. He got a bucket of recommanded project, which I reformed here.
1. the c standard library.
string.h
memchr, memcmp, memcpy, memmove, memset, strcat, strncat, strchr, strcmp, strncmp, strcoll, strcpy, strncpy, strcspn, strerror, strlen, strpbrk, strrchr, strspn, strstr, strtok, strxfrm
stdlib.h
abs, div, labs, ldiv, atof, atoi, atol, strtod, strol, bsearch, qsort
time.h
asctime, difftime
More advanced task would be to reimplement printf.
2.you have to parse a XML file at work using Java, then at home you can try rewrite the parser in C/C++.
malloc
all you memory, and don't free
anything. Later, try writing your own memorypool with a small (mark-and-sweep) garbage collector.I recommend that you try to write a line-oriented text-editor akin to the old MS-DOS "EDLIN" program.
See http://en.wikipedia.org/wiki/Edlin for a description of EDLIN
Facebook Puzzles
Dropbox Puzzles
Reddit Puzzle: http://blog.reddit.com/2010/08/reddit-is-hiring.html
I have not looked into this yet, but UVA Online Judge has problems and I have heard as a recommended source for something like this: http://uva.onlinejudge.org/
Try http://projecteuler.net, they have many nice problems.
You could also try playing with bits: http://graphics.stanford.edu/~seander/bithacks.html.
The Ruby interpreter is quite a fun project to work on, actually - there's a surprising amount of both low-level and linguistic hackery that goes on in there.
Skim the Linux source code, the FreeBSD source code, the OpenBSD source code, or the LibUSB source code.Find something that grabs your "Hey, I can do better than that! reflex." DO better than that!(LibUSB needs the ability to talk to devices, like My HP All-In-One, that used an outgrowth of the Parallel Port standards that were ported to USB.)
1.The C Programming Language by Brian W. Kernighan, Dennis M. Ritchie
Keep a copy of K&R by your side, but find something real to work on.
Buy the K&R book, do the exercises. You'll (re)learn all you need about C, and a lot about CS too. Skip to the later chapters for parsing and Unixy goodness.
2.For helpful issue and tips: C Traps and Pitfalls by Andrew Koenig
3.working through code in C Interfaces and Implementations book.
4.On the other hand, if you are interested in system programming (e.g., to understand how to talk with the OS directly), there are tons of books and projects. I would recommend Unix Programming Environment,Advanced Programming in the UNIX Environment and UNIX Systems Programming: Communication, Concurrency and Threads.
5.How to implement a simple RMDB: according to this article.