古代的剑客们与
对手相逢时,无
论对手多么强大,
明知不敌,也要亮出自己的剑!
读者:为什么有些版本的 toupper() 对大写字符会有奇怪的反应?为什么有的代码在调用 toupper() 前先调用 tolower()?
小林:老版的 toupper() 和 tolower() 不一定能够正常处理不需要转换的字符参数,例如数字、标点或已经符合请求的字符。在 ANSI/ISO 标准 C 中, 这些函数保证对所有的字符参数正常处理。
读者:怎样把字符串分隔成用空白作间隔符的段?怎样实现类似传递给
main() 的 argc 和 argv?
小林:标准中唯一用于这种分隔的函数是 strtok(), 虽然用起来需要些技巧, 而且不一定能做到你所要求的所有事。例如, 它不能处理引用。
读者:我需要一些处理正则表达式或通配符匹配的代码。
小林:确保你知道经典的正则表达式和文件名通配符的不同。前者的变体在 Unix工具 ed 和 grep 等中使用, 后者的变体在多数操作系统中使用。有许多匹配正则表达式的包可以利用。很多包都是用成对的函数, 一个 “编译” 正则表达式, 另一个 “执行” 它, 即用它比较字符串。
有时候,正是那些意想不到之人,成就了无人能成之事。
——图灵
正文完