每日分享 – C语言 | 每日基础(98)

读者:怎样读入方向键, 功能键?

阿一:terminfo, 某些版本的 termcap, 以及某些版本的 curses 函数库有对这些非 ASCII 键的支持。典型的, 一个特殊键会发送一个多字符序列。分析这个多字符序列比较麻烦。如果你首先调用了 keypad(), curses 会帮你做分析。在 MS-DOS 下, 如果你在读入键盘输入时, 收到一个值为 0 的字符,这就标志着下一个读入的值代表一个特殊键。有关键盘的编码可参见任何 DOS 的编程指南。

读者:怎样读入鼠标输入?

阿一:请查阅你的系统文档, 或者在特定系统的新闻组寻问, 请先查看其组的 FAQ。鼠标的处理在Windown 系统,

MD-DOS, Macintosh 下是完全不同的, 也许每个系统都不一样。

读者:怎样在读入文件前, 知道文件大小?

阿一:如果文件大小指的是你从 C 程序中可以读进的字符数量, 要得到这个精确的 数字可能困难或不可能。Unix 系统函数 stat() 会给出准确的答案。有些系统提供了类似 Unix 的 stat() 函数, 但只返回一个近似值。你可以调用 fseek() 搜索到文件尾, 再调用 ftell(), 或 者调用 fstat(), 然而这些方法都有同样的问题: fstat() 不可移植, 通常返回和 stat() 一样的值; ftell() 并不保证可以返回字符计数, 除非是用于二进制文件, 但是, 严格 来讲, 二进制文件并不一定支持 fseek 搜索到 SEEK END。某些系统提供 filesize() 或 filelength() 的函数, 但是它们明显的不可移植。

正文完