小编Mic*_*ael的帖子

BITMAPINFOHEADER biHeight是我期望的两倍

我正在用C编写一个应用程序来解析Windows图标文件(ICO).

当我在BITMAPINFOHEADER结构中读取现有图标条目时,结构中的所有变量都包含预期的值,除了biHeight应该包含图像高度(以像素为单位)的值,它应该是它应该的两倍.

例如,如果我有64x64图标,biWidth则为64,但是biHeight为128.

这是预期的行为吗?这是我第一次处理BITMAPINFOHEADER.

我主要是在关于BITMAPINFOHEADERMSDN文章中进行操作.

c winapi icons ico

6
推荐指数
1
解决办法
393
查看次数

正确格式化--help输出

我正在用C编写一个命令行程序,我想实现一个--help选项来显示常用的东西,比如可用的选项和它们的用途,以及用法示例.

是否有正确的方法来格式化帮助中显示的文本?或者我是否尽力让它看起来不错?

我查看了SourceForge上的一些随机程序,看看他们是如何做到的,并且大多数只使用了一堆printf()s来输出预格式化(就间距和缩进而言)文本.

grofftroff合适吗?我在Googlings中遇到过这些应用程序,它们似乎是某种排版程序,但我对它们并不熟悉.

c formatting command-line

3
推荐指数
1
解决办法
154
查看次数

C 中接受带有通配符的文件名的跨平台“标准”方式?

我正在用 C 编写一个命令行实用程序来处理图像文件。在当前状态下,应用程序可以接受多个显式文件名argv,但我想添加对通配符的支持,如下所示:

imgprocess.exe *.png *.gif
Run Code Online (Sandbox Code Playgroud)

或者

./imgprocess *.png *.gif
Run Code Online (Sandbox Code Playgroud)

看起来这应该是 C99 支持的常见问题,但我很难找到标准的跨平台解决方案。

对于 Windows,看起来(通过本文)链接到setargv.obj可以解决问题,但这是特定于 Windows 的,我认为是 Visual Studio。

对于 Linux,它看起来readdir()或者scandir()可以给我一个目录列表,我可以迭代它来匹配文件,但我认为这只是 Linux。

由于通配符是如此常见,我觉得我错过了某种简单明显的解决方案。目前我正在 Linux 上使用 gcc 进行编译,但我希望它至少能够针对 Windows 和 Linux 进行编译。

感谢您的任何建议。

c arguments cross-platform wildcard

1
推荐指数
1
解决办法
694
查看次数