Hello there..

Can anyone give me an idea for a fun project in C? I just need something that will keep me busy and pretty much entertained. It's also for practice.

What I mean when I say a fun project is something like the last Machine Problem I made. It was a program that would create a bitmap file. Basically, I would receive commands from a text file and the output would be a bitmap file. Projects that lack fun in them, for me, would we things like data management, sorting and the like. Of course, if these things would be required in the project itself, that would just be fine.

By the way, I would rank my C programming skills as intermediate. I'm already on my second programming class in college plus I really love programming(if that's a plus).

Thank you and God bless.

here's something fun to do: create a program that encrypts/decrypts messages by hiding/extracting them from a JPG image.

I'm not talking about just "hiding messages" in the exif header, which would be easily detected by any network sniffer. I mean actually changing a relatively small percentage of the bytes to be later assembled into a message.

as you probably know, JPGs are lossy, so if you were to manipulate only 1 out of 100 bytes, it would just add a bit more noise to an already somewhat noisy picture. thus a 100KB image could have roughly a 1KB message embedded in it.

the most simple version would just replace a single JPG byte for an ASCII byte -- making sure you take care not to corrupt the frame of the JPG file itself.

slightly better would be to only use the lower 7 bits, leaving the MSB at its original state. also important would be to not plop your "code bytes" in the middle of large fields of 0x00 or 0xFF byte patterns.

better still would be "chopping up" the code bytes so they only replace certain bit fields (or single bits!) that would cause less noticeable shifts in the picture quality. This would of course reduce the amount of message one could put in any given JPG file

improve it even more, by making the ordering of the "code bytes" to be pseudo-random... instead of having them be placed every 1 out of 100 (for instance) they could be mixed up by using the filename as a hash to "randomly" determine the distribution

finally, if you got all that working, you'd implement existing public key encryption protocols for the message itself, prior to its embedding in the photo, and wrap it all up in a neat little GUI package with a keyring manager and everything.


You could try and write a very simplified chatroom program. You would need to write two programs:
1. The server, which accepts connections from all the clients. Collects messages from clients, and sends them to all the other clients.
2. The client, which gets a message from the user, sends it to the server. It also receives messages from the server and displays them on the screen along with the name of the client that sent the message.

In doing this you would need to learn about basic networking and threads - two very important topics that if you learn them now will help you breeze through some parts of your courses later in school.

If you have never done any networking or threads before, I would suggest trying to learn both individually first by just making some small test programs, then once you have a feel for the concepts, try and put the chat program together. If you finish quickly you can always extend it to have multiple chat channels, add commands that the client can use, add password authentication, etc.

Write a program that asks the user to enter their name. Then ( the hard part) get the program to show a message "hello <insert user's name>."

Thank you guys(yes..even you iamthwee)..I appreciate the fact that you wrote those explanations which were far longer than I expected..

Try to build SudoKu game. First try for 3 * 3 matrix. If you enter teo or three numbers in the block, it should automatically fill the rest of the fields. Really interesting.

Try to build SudoKu game. First try for 3 * 3 matrix. If you enter teo or three numbers in the block, it should automatically fill the rest of the fields. Really interesting.

I managed to make this with a 9 x 9 matrix (in C++ though), its really hard if you dont know what your doing! If you decide to do this, I found the best way to be, to make a 2D array (x,y) of vectors or arrays all containing possible candidates. When the vector is left with only one element the square is solved :)

Dear Friend i think possible project you can get using C Pro language may include creating a Simple calculator, it may also include file handling i.e to handle files from dos.