在 C 中,字符串是 char( char *) 的数组,字符通常存储在char. 我注意到来自 libC 的一些函数将作为参数整数而不是字符。
例如,让我们来看看toupper()两者tolower()都使用的函数int。手册页说:
如果 c 不是 unsigned char 值或 EOF,则这些函数的行为是未定义的。
我的猜测是,与 a int,toupper并且tolower能够处理unsigned charand EOF。但实际上EOF是在实践中(关于它的值有什么规则吗?)一个可以与 a 一起存储的值char,并且由于这些函数不会转换EOF为其他东西,我想知道为什么toupper不简单地将 char 作为参数.
无论如何,为什么我们需要接受不是字符的东西(例如 EOF)?有人可以给我一个相关的用例吗?
这与fputcor类似putchar,也将 aint转换为unsigned char无论如何。
我正在寻找那个选择的确切动机。我想被说服,我不想回答我不知道有一天是否有人问我。