这个C语句怎么理解!谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/24 11:26:34
#include <stdio.h>
int main()
{
char ch;
while( scanf( "%c ", &ch ))
{
printf( "%c", ch );
}
printf( "\n" );
return 0;
}
这是是一个将字母紧凑化的程序!例如A B C EUT运行后将变成ABCEUT
我想问一下中间那个while( scanf( "%c ", &ch ))是怎么进行控制的?当输入空格时,scanf函数的返回值是多少啊?还有一个问题,这个程序运行之后总是把最后一个字母丢掉例如上面实际输出是ABCEU。请大侠帮帮忙!谢谢了啊!

这个循环是一死循环,因为scanf()的返回值是它输入变量的数目,在这里是1
所以是死循环
所以我建议改为
#include <stdio.h>
int main()
{
char ch;
while(scanf( "%c", &ch )&&(ch!='\n')) /*遇到回车,表示输入结束*/
{
if(ch!=' ')printf( "%c",ch); /*遇到空格不打印*/
}
printf( "\n" );
return 0;
}

由于while( scanf( "%c ", &ch ))

这一句中"%c ",你写了一个空格所以不能把最后一个字符打印出来.
所以要把空格删掉,不打印空格还是用选择的语句在程序设定好一点.

其中不合格处较多,下面为调试代码,用Tab键结束循环.
**********************************************************************************************************************
#include <stdio.h>
main()
{char ch=32;
while(ch!=9)
{ch=getchar();
if(ch==32) continue;
else printf("%c",ch);}
printf("\n");}
****************************************************************************************************************