Online Compiler C

#include <stdio.h> int main() { char c,save=0; while((c=getchar())!='.') if(c=='.'&&c==' '){ }else { putchar(c); save=c; } return 0; }
这段代码从标准输入读取字符,遇到句点(.)时停止。它试图实现某种过滤功能,但逻辑上有问题。

- 代码中的条件 `if(c=='.'&&c==' ')` 永远不可能为真,因为一个字符不能同时是句点和空格。这导致 `if` 分支永远不会执行,所有字符(包括句点前的空格)都会被直接输出。
- 变量 `save` 被赋值但从未使用,可能原本想用来记录前一个字符,但当前逻辑没有利用它。

- 检查 `if` 条件:你希望判断什么情况?是判断当前字符为句点且前一个字符为空格吗?如果是,需要比较 `c` 和 `save`,而不是让 `c` 同时等于两个不同的值。
- 思考循环何时停止:当前条件是 `c!='.'` 时继续循环,但遇到句点后循环结束,句点本身不会被处理。你需要在循环内部或外部处理句点的情况。