Online Compiler C

#include <stdio.h> int main() { char ch; while ((ch = getchar()) && ch != '.') { if (ch >= 'A' && ch <= 'Z') { printf("%c", ch + ('a' - 'A')); } else if (ch >= 'a' && ch <= 'z') { printf("%c", ch - ('a' - 'A')); } else { printf("%c", ch); } } printf(".\n"); return 0; }
这段代码的功能是:从输入中逐个读取字符,直到遇到句点为止。对于每个字母字符,它会转换大小写(大写变小写,小写变大写),其他字符保持不变,最后输出一个句点并换行。

- 注意 `getchar()` 返回的是 `int` 类型,不是 `char`。用 `char` 类型变量接收返回值,在判断文件结束符(EOF)时可能会出错。建议检查 `getchar()` 的返回值是否为 `EOF`,而不仅仅是判断字符是否为 `'.'`。
- 循环条件 `(ch = getchar()) && ch != '.'` 中,赋值表达式的结果是 `ch` 的值,当 `ch` 为 `'\0'`(空字符)时也会导致循环提前结束,这不是预期的行为。应该先读取字符,再单独判断是否结束。