简单的C开源项目


16

我一直在学C,我正在寻找一个(最好是非常)简单的开源项目。它很可能涉及到更多的玩耍和学习,而不是实际的贡献,但它似乎是获得一些经验和看看C如何被真正使用的好方法。有任何想法吗?

27

有许多以C语言编写的开源项目。如果你只是想修补而不是贡献,只需选择一个你经常使用的工具(以便你熟悉它的功能,以及可能会改变/改进的地方)。

如果你正在寻找真正的建议,那么寻呼机“少”是一个好的开始。这是写在一个干净的方式,很短,而且it does a surprising amount

当然,这主要取决于你认为简单!我用the mutt mail client - 这是写得很整洁,这很容易扩展,但我甚至不会假装了解它是如何工作的。

你没有提到你的环境,所以我可以自由承担GNU/Linux。我会进一步假设你正在运行Debian,如果可以的话,你可以很容易地将源代码下载到应用程序中。只是运行这个:

apt-get source less 
+5

我刚刚得知你可以得到源,这是真棒。 08 10月. 122012-10-08 23:38:28


7

这听起来很奇怪,但我认为学习C的最好方法是编写Python的C扩展。有许多简单的扩展以某种方式使用Python C API,使用它很有趣。 (也许这是不感兴趣的,如果你不知道Python的^^)

这基本上就是我了解到C.对于小模块只看Cheeseshop上^ Wpypi的方式,有一些是用C写

许多图书馆

否则查看一些简单的GNOME GUI应用程序。其中许多是用C语言编写的。

+1

两个竖起大拇指。如果OP知道Python,我会建议相同的。 Python API非常精心设计。它会教你关于内存管理,你会得到一些有用的交互式玩。 我写的一个有用的Python扩展:pypi.python.org/pypi/py_sg 24 9月. 082008-09-24 00:07:00


2

您可能会发现有趣的项目有一个非平凡的开源社区都会涉及到一些复杂性。野兽的性质:如果它真的不复杂(或者不是很复杂),它或者已经很好地解决了,并且标准还是不够吸引人的注意力。

的新问题领域打破这种状况,当然,所以你只需要建立的东西太聪明了,这是事实后,明显的出现...

也说,考虑dillo,这尽管头版正在悄悄地在版本2(基于fltk)上工作。


3

正如史蒂夫所说,一些标准的UNIX实用程序,如“少”可能是一个好主意。

我也在想,也许一个轻量级的文本编辑器可能会很酷,试图黑客入侵。例如“Joe”是用C编写的,并且是GPL许可的。同样,如果你在Windows上,“WinVi”编辑器是GPL许可证,并且用C编写。

或者也许是一种简单的基于控制台的某种游戏?最好是文本的,就像冒险/ RP类型的游戏一样?


3

如果你想要一些很好的代码来查看,请查看sqlite源代码。
不管你是否可以对它做出贡献或修补它,我都不知道,但至少看一眼就可以看到干净整洁的C风格。

sqlite


6

你已经知道什么语言?你知道像Perl/Python/Ruby/Groovy这样的动态语言吗?

什么C是最好 at(在我看来)是低级别的编程,涉及硬件访问,庞大的数学和高效算法。

如果您不尝试使用C来完成您在动态语言中执行的相同操作,而是尝试将其用于其擅长的功能,那么您将获得更多满足感。所以请尝试一些硬件黑客!你有数码相机,路由器,手机或其他带有开源固件或实用程序的小工具吗?尝试黑客攻击这些!尝试编写一些代码来查看二进制文件!如果你对数学和科学感兴趣,找一些与你最喜欢的科学相关的数字包,并在代码中寻找答案。

最后,试着看看Linux内核。当然,这是一个庞大的代码库,数百万行代码,但它也是非常模块化和记录良好。关于代码至少有两本非常好的书:Understanding the Linux KernelLinux Device Drivers(后者可以在线免费获取)。


0

Mozilla可能是您的不错选择。对于C你可以检查他们的安全模块在 https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Getting_started_with_NSS