【问题标题】:Why is the function not returning lowercase letters?为什么函数不返回小写字母?
【发布时间】: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 代码在控制台中重现此错误。

标签: c lowercase


【解决方案1】:

代码应该使用lower的返回值:

putchar(lower(c));

您可能还想使用标准库函数tolower

【讨论】:

  • 哇,真是个愚蠢的错误哈哈,是的,我刚刚意识到我没有使用返回的值。欣赏!
猜你喜欢
  • 2013-09-02
  • 2012-01-20
  • 1970-01-01
  • 2013-06-25
  • 2020-03-23
  • 2019-06-20
  • 2023-04-09
  • 2020-07-06
  • 2018-07-04
相关资源
最近更新 更多