如何在不使用字符串命令和ASCII代码的情况下将字符串中的大写字母更改为小写字母,反之亦然

时间:2019-04-11 21:52:08

标签: c

我必须编写一个函数,该函数将从不是数字的文本中删除每个字符,将每个单词的首字母更改为大写字母,并将其余字母更改为小写字母。

问题在于:

  • 我不能使用ctype,stdlib和字符串库
  • 我想输入的时候只能使用scanf
  • 除数组声明外,我无法使用[]运算符
  • 除0和1外,我不能使用数字

通常这很容易,但是在这些条件下,我不知道该怎么做。我是新手,不要苛刻:)。

1 个答案:

答案 0 :(得分:2)

也许尝试制作一些这样的宏:

#define IS_UPPER(c) ( (c) >= 'A' && (c) <= 'Z' )
#define IS_LOWER(c) ( (c) >= 'a' && (c) <= 'z')
#define TO_UPPER(c) ( (c) -= ('a' - 'A'))
#define TO_LOWER(c) ( (c) += ('a' - 'A'))

#define IS_ALPHA(c) ( IS_UPPER(c) || IS_LOWER(c) )

看看你能不能做点事情

void homework(char * txt)
{
    while(*txt != NUL)
    {
        /* do some stuff */

        txt++;
    }
}