基本上,我必须将所有小写字母转换为大写字母,但我想我会稍微扩展一下这个例子。因此,我当前的代码将当前案例更改为相反的情况:
#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
。我怎样才能做到这一点?
答案 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++;
}