发布网友 发布时间:2024-10-21 20:13
共2个回答
热心网友 时间:2024-11-21 23:27
“输入了 AB 给 c”-- 你的意思是你拍入了 AB回车。追答一步一步执行:
(1)拍入A时 getchar 并未开始读字符,因为输入流缓冲区里没东西。
拍入B时 getchar 并未开始读字符,因为输入流缓冲区里没东西。
拍入回车,状态开始变化:AB回车3个字符从键盘缓冲区送往输入流缓冲区,于是输入流缓冲区里有东西了。
c = getchar(); 从输入流缓冲区里取1个字符,赋给c. 剩余 B回车2个字符在输入流缓冲区。
(2)
while(c != EOF) // c 里是 A , 不等于EOF,条件满足,进入循环体
{
putchar(c); // 输出 A
c = getchar(); // 从输入流缓冲区里取字符B,赋给c. 剩余 回车1个字符在输入流缓冲区。
}
(3)
while(c != EOF) // c 里是 B, 不等于EOF,条件满足,进入循环体
{
putchar(c); // 输出 B
c = getchar(); // 从输入流缓冲区里取字符回车,输入流缓冲区空了。
}
(4)
while(c != EOF) // c 里是回车 , 不等于EOF,条件满足,进入循环体
{
putchar(c); // 输出 回车
c = getchar(); // 输入流缓冲区里没有东西,getchar 等待你输入。
}
热心网友 时间:2024-11-21 23:27
话说,你用于判断的变量是ch,而获取字符的是c,输出字符的又是ch,你确定能达到你说的效果么。。。