这个C语句怎么理解!谢谢!
来源:百度知道 编辑:UC知道 时间:2024/05/24 11:26:34
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");}
****************************************************************************************************************