学习C语言的有趣项目?

43

我有一些C语言的基础知识(稍微了解一些C++),我得到了K&R的一份副本,并希望利用它来更深入地了解该语言。有哪些好的想法可以涉及大部分C语言特性和标准库?另外,我应该注意C89和C99之间的重要区别是什么?

编辑:忘记提到了,这对于初学者来说应该是可以做到的。我不是在寻求编程教程;相反,我想要中等规模的东西。我知道操作系统是C的主要目的之一,但那会不会太复杂了?

另外,阅读并回答问题总是一个好主意,但我想要实践一下,写一个能够做一些事情的程序。

15个回答

69

实现一种编程语言。这并不需要非常困难 - 我曾经做过那个不可名状的语言 - 但它将迫使你学习C语言的许多重要部分。如果您不想自己编写词法分析器和/或解析器,可以使用lex/flex和yacc/bison,但如果您计划这样做,您可能希望从一个稍微小一点的项目开始。

选取一些在高级语言中使用的程序,并进行重写。如果您有一个Perl/Python/Ruby/Bash脚本经常使用,同时注意到其运行时存在滞后,可以着重于性能,使用C语言进行重写。

然而,我认为,如果您正在编写一个用于学习C语言的程序,最好重新发明轮子。在C语言中编程就是制造和调整轮子,如果您只通过使用抽象化轮子的库来学习C语言,那么您实际上不是在学习C语言。这可能会更快 - 当您在C语言上开发真正的项目时,请不要重新发明轮子 - 但如果您这样做是为了学习,那么请务必学习轮子的工作原理。


5
这个项目的所有资源都可以在这里找到:https://dev59.com/x3VD5IYBdhLWcg3wXaed - dmckee --- ex-moderator kitten
1
会尝试。很好的例子。:D - Jānis Gruzis

29

在 StackOverflow 上阅读并回答 C 语言问题是学习该语言细节的好方法。


16

我推荐通过这些网站进行学习:http://projecteuler.net/。当然,有时候用C语言低效的方法去解答问题可以帮助我们感受暴力算法所需的时间。然后再尝试想出更聪明的方法,真正体会C语言的美妙之处!


7

一个简单语法语言的解释器。当然,不应使用词法/语法分析器生成器来使其更有趣。


6

构建一个国际象棋游戏。这可以非常琐碎,因为您甚至可以使用简单的控制台进行操作。这将让您实现一些逻辑、使用数据结构、处理指针等。存储分数以便您能够处理持久性。


5
当我想学习一门新语言时,我总是会考虑一些实用的工具并编写程序。我发现编写一个实际使用的程序比概念证明更能教会我知识。
例如,你可以编写一个程序,从指定的目录开始遍历,构建所有文件的列表,并对它们进行某些操作。比如给出一个简单的大于指定大小的所有文件列表。然后再考虑如何添加过滤器,这样完成后就可以用它来清理目录了。它可能会查找包含“备份”或包含tmp的文件。不要忘记至少有一个函数需要传递指向指针的指针,以便更好地掌握它们。
是的,我知道你可以将其作为脚本来完成,但你也可以自定义一些特定的内容。

4

根据您想要了解的深度,也许可以尝试看看Doom


4

硬件(嵌入式微处理器系统)和操作系统内核代码?

请注意,这是一个问题而不是需要翻译的内容。如果您有其他需要翻译的内容,请告诉我。

1
使用微控制器非常有趣,Atmel AVR 微控制器很不错。 - Johan

2

在这种情况下,我最喜欢使用的程序是正则表达式匹配程序。它使用相当基本的语法,但使用了语言的许多低级特性(鉴于C是一种相当低级的语言,这些特性大部分都包括在内)。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接