while (~scanf("%c\n", &ch)) 出错


#include <stdio.h>
#include <ctype.h>
int main()
{
    char ch = 0;
    while (~scanf("%c\n", &ch))
    {
        if (isupper(ch))
            printf("%c\n", tolower(ch));
        else
            printf("%c\n", toupper(ch));
    }
    return 0;
}

这是结果

img


不懂为什么会错位

你把\n去掉就好了,不然还得读取回车
while (~scanf("%c", &ch))


#include <stdio.h>
#include <ctype.h>
int main()
{
    char ch = 0;
    while (~scanf("%c", &ch))
    {

        if (isupper(ch))
            printf("%c", tolower(ch));
        else
            printf("%c", toupper(ch));
    }
    return 0;
}


img


如有帮助,请点击我评论上方【采纳该答案】按钮支持一下,谢谢!以后有什么问题可以互相交流。

正确写法是while (scanf("%c", &ch) == 1),因为scanf()的返回值也可能是EOF(-1)