【问题标题】:tolower() not workingtolow() 不工作
【发布时间】:2012-08-27 16:03:25
【问题描述】:

下面的代码 sn-p 用于将字符串转换为小写。

int main()
{
    unsigned char s[] = "AbS.d_";

    tolower(s);
    printf("%s\n", s);

    return 0;
}

我得到output 为:

AbS.d_

为什么字符串没有被转换?

【问题讨论】:

  • 因为tolower() 逐个字符工作,并返回一个输出。它不会一次转换整个字符串。即使这样做,它也会导致您的静态字符串出现访问冲突;)
  • @paulsm4 字符串不是静态的(也许问题已被编辑?)
  • @MatteoItalia,确实是it does。该函数接受int,然后传递一个指针。
  • @chris 我看到你的链接并提高你this one
  • @chris:你说得对,我倾向于忘记 C 相对于 C++ 是多么宽容。

标签: c tolower


【解决方案1】:

tolower 接受 int 并返回降低的 int。

这应该可行:

int i=0;
for(i=0; s[i]; i++)
{
    s[i]=tolower(s[i]);
}

【讨论】:

  • 你好无限循环。你不是说for(i=0; s[i]; i++) { ... }吗?
  • 技术上需要int
【解决方案2】:

tolower 将字符类型作为参数,但您使用的是字符串。您需要遍历您的数组,并为每个字符调用 tolower

【讨论】:

  • 我认为tolower的实现是保证免等待的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
相关资源
最近更新 更多