首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

很经典的新手有关问题, while 下 回车的副作用 详细解释

2014-01-23 
很经典的新手问题,while 下 回车的副作用 详细解释求解 #includestdio.hint main(void){char cscanf(%

很经典的新手问题, while 下 回车的副作用 详细解释
  求解
 #include<stdio.h>
int main(void)
{
    char c;

    scanf("%c",&c);
    while(1)
           {
            if(c =='q'){
                 printf("%d\n",'q');
                 break;
                  }           
            printf(" %d \n",c);
            
            scanf("%c",&c);
           }
    printf("Done!!\n",c);

   
    return 0;
}
   输出的副作用是   输出的时候连带这 回车的  10   也输出了~~
在每个最后不带\n的printf后面加fflush(stdout);
在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin);
另外请检查scanf的返回值。

[解决办法]
我每次都是这样处理的


#include<stdio.h>

int main(void)
{
    char c;

    scanf("%c%*c",&c);
    while(1){
if(c =='q'){
 printf("%d\n",'q');
 break;
}           
printf(" %d \n",c);
    
scanf("%c%*c",&c);
   }
    printf("Done!!\n",c);   
    return 0;
}


%*c就是读入但不赋给任何变量,我通常都是这样处理的,用起来很方便

热点排行