【问题标题】:Create your own toUpper and toLower in C [closed]在 C 中创建自己的 toUpper 和 toLower [关闭]
【发布时间】:2013-03-05 23:16:03
【问题描述】:

当我运行和编译代码时,我得到了 A 和 Z 以及 a 和 c 都未定义的错误,我该如何解决这个问题?

char toUpper ( char c ) {

    if ( C >= a + c <= z) 
        -32;
    return c;

} // ends toUpper

char toLower ( char c ) {

    if ( c >= A + c <= Z ) 
        +32;

} // ends toUpper

【问题讨论】:

  • 请找一本关于 C 的书学习一下。
  • 嗯,这些不是变量。你用的是哪本 C 书?
  • 如果你必须为此寻求帮助,那么你的学习方法显然是行不通的。你在看哪本书?
  • 试试'a''z''A''Z'。这些是字符常量文字。在你的文本中查找。

标签: c tolower toupper


【解决方案1】:

将字母用单引号括起来形成字符文字,如下所示:

'a'

【讨论】:

  • 不是唯一的问题...
  • 除了“-32;”和“+32”之外,代码中还潜伏着什么其他不好的东西?我至少计算了两个额外的问题。 :-)
【解决方案2】:

简要总结:

  • 您需要在字符常量周围加上引号。
  • 您的函数应返回大小写字符。
  • 测试两个条件时,使用&amp;&amp; 表示“逻辑与”,使用|| 表示“逻辑或”

如果&amp;&amp; 的两边都为真,则为逻辑且为真。如果|| 的一侧为真,则逻辑或为真。

我不是“编辑你的代码来修复它”,因为我很确定你是学习如何编写 C 的人,如果我只是在这里输入“正确的代码”,你只需复制它并将其粘贴到您的代码中,并且什么都学不到。

【讨论】:

    【解决方案3】:

    您的代码中有两个主要问题。

    首先是您使用的是a 而不是'a'。当编译器看到a 时,它会尝试将其解释为标识符。这意味着它应该引用一个参数、本地、函数名等......您的代码的意图是让它表示字符 a(字母表的第一个字母)。在单个字母周围加上单引号会导致编译器将其解释为字符文字。

    第二个问题是你的条件语句不正确。您正在尝试查看C 是否既大于或等于'a' 又小于或等于'z'。这种类型的布尔比较是用 C 中的 &amp;&amp; 运算符完成的。只有当 &amp;&amp; 的左侧和右侧都为 true 时才为 true

    if ( C >= 'a' && c <= 'z') 
    

    【讨论】:

    • “为什么if (c &gt;= 'a' &amp;&amp; c &lt;= 'z')在字符集是EBCDIC的时候不起作用?”...就用islower,ffs!
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多