在C中切换字符串的字母大小写

时间:2014-12-17 02:36:21

标签: c

基本上,我必须将所有小写字母转换为大写字母,但我想我会稍微扩展一下这个例子。因此,我当前的代码将当前案例更改为相反的情况:

#include <stdio.h>
#include <ctype.h>

int main()
{
  int i=0;
  char str[] = "Test String";
  char c;

  while (str[i])
  {
    if (isupper(str[i])){
        c=str[i];
        putchar(tolower(c));
        i++;
    } else if (islower(str[i])){
        c=str[i];
        putchar(toupper(c));
        i++;
    }
  }
  return 0;
}

没有空格字符或分隔符时工作正常。上面只会输出tEST,而我希望它处理整个字符串并返回tEST sTRING。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:8)

您需要包含角色既不满足条件的情况:

while (str[i])
{
  if (isupper(str[i])){
      c=str[i];
      putchar(tolower(c));
      i++;
  } else if (islower(str[i])){
      c=str[i];
      putchar(toupper(c));
      i++;
  } else {
      c=str[i];
      putchar(c);
      i++;
  }
}

否则,程序会被卡住&#34;在这个空间里,永远不会前进i,不会打印任何东西。


该程序也可以简化。目前有很多重复。这是一个更简单的版本:

char str[] = "Test String";

for (int i = 0; str[i]; i++)
{
    putchar(isupper(str[i]) ? tolower(str[i]) : toupper(str[i]));
}
return 0;

答案 1 :(得分:2)

添加

else
{
    c=str[i];
    putchar(c);
    i++;
}