基础知识 | 每日一练(120)

2019-09-19 14:51:38 浏览数 (1)

基础知识练习
士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭
读者:为什么有些版本的 toupper() 对大写字符会有奇怪的反应?为什

么有的代码在调用 toupper() 前先调用 tolower()?

小林:老版的 toupper() 和 tolower() 不一定能够正常处理不需要转换的字符参数,例如数字、标点或已经符合请求的字符。在 ANSI/ISO 标准 C 中, 这些函数保证对所有的字符参数正常处理。

读者:怎样把字符串分隔成用空白作间隔符的段?怎样实现类似传递给main() 的 argc 和 argv?

小林:标准中唯一用于这种分隔的函数是 strtok(), 虽然用起来需要些技巧, 而且不一定能做到你所要求的所有事。

读者:我需要一些处理正则表达式或通配符匹配的代码。

小林:确保你知道经典的正则表达式和文件名通配符的不同。有许多匹配正则表达式的包可以利用。很多包都是用成对的函数, 一个 “编译” 正则表达式, 另一个 “执行” 它, 即用它比较字符串。查查头文件 <regex.h> 或<regexp.h> 和函数 regcmp/regex, regcomp/regexec, 或 re comp/re exec。这些函数可能在一个单独的 regexp 库中。

0 人点赞