【发布时间】:2021-01-24 13:30:55
【问题描述】:
我目前是 C 的新手,所以对我来说事情的工作方式仍然有点陌生,因为我来自 Java 的 OOP 背景。我正在尝试从终端获取输入,然后将其转换为全小写字母,但似乎该功能不起作用。如果可能的话,有什么建议吗?
#include <stdio.h>
int lower(int c){
if (c >= 'A' && c <= 'Z')
return c + 'a' - 'A';
else
return c;
}
int main(){
int c;
while ((c = getchar()) != EOF){
lower(c);
putchar(c);
}
}
【问题讨论】:
-
您的
main函数没有对lower的返回值做任何事情。如果这是用 Java 编写的,它会有完全相同的错误,所以我认为发生的事情没有任何“外星人”。 -
lower(c)->c = lower(c)。lower(c);只是调用函数,然后对返回的值不做任何事情。 -
您的程序不会将带重音的大写字符转换为小写,顺便说一句。
-
不要忽视标准库函数
c = tolower(c); -
@MaximEgorushkin 根据您配置的 C 语言环境,我相信是的。例如,
char可以表示ISO 8859-1 中的所有字符,其中包括重音大写字符。您可以使用 Alt+NumPad 代码在控制台中重现此错误。