为什么memset采取int作为第二个参数,而不是一个char,而wmemset需要wchar_t的,而不是像long或long long?
我们如何在C或C++中将多语言字符串或unicode字符串转换为大写/小写.
在C中,字符串是char(char *)数组,字符通常存储在其中char.我注意到libC中的一些函数将作为参数整数而不是char.
例如,让我们的职能toupper()和tolower()两个使用int.手册页说:
如果c不是无符号字符值或EOF,则这些函数的行为是未定义的.
我的猜测是,有一个int,toupper并且tolower能够处理unsigned char和EOF.但实际上EOF是在实践中(有没有关于它的值的规则?)一个可以用a存储的值char,并且由于这些函数不会转换EOF成其他东西,我想知道为什么toupper不简单地将char作为参数.
在任何情况下,为什么我们需要接受不是字符的东西(例如EOF)?有人能为我提供相关的用例吗?
这与fputc或类似putchar,也可以将int其转换为unsigned char无论如何.
我正在寻找这种选择的确切动机.我想说服,我不想回答,我不知道有一天有人问我.