【发布时间】:2019-05-04 04:41:54
【问题描述】:
int main(){
char s;
while(s!='\n'){
scanf("%c",&s);
if(s==' ')continue;
else printf("%c",s);
}
}
输入:堆栈溢出
输出:堆栈溢出
我所期望的: SSttaackkkoovveerrfflloooww
我不明白这是怎么回事。
【问题讨论】:
-
这是未定义的行为,因为
s未初始化。除此之外,循环似乎只是按字符扫描输入字符并跳过空格。你应该解释为什么你期望这个输出。 -
您看到本地回声了吗?
-
缓冲,我敢打赌。默认情况下,输出到
stdout(printf写入)是 line buffered,这意味着它不会实际写入控制台,除非缓冲区已满或有换行符。尝试明确地flushingstdout。 -
因为我打印字符。
-
我怎样才能到达这个缓冲区
标签: c loops while-loop